2016-03-23 31 views
0

Asp.net MVC yapıyorum İndeksimi göstermek istiyorum ama yöntemi çağırırken sorun yaşıyorum.Eylem yöntemi çağrlanılamıyor 'System.Web.Mvc.ActionResult Index (Int32, Int32, System.String, System.String, System.String, Int32 ByRef)

Birisi neyi yanlış yaptığımı söyleyebilir mi?

public ActionResult Index(int pageNumber, int pageSize, string filter, string sortColumn, string sortOrder, out int totalCount) 
    { 
     List<UserActivityModels> userActivity = null; 

     totalCount = 0; 

     string sqlWhere = string.Empty; 

     sqlWhere = string.IsNullOrEmpty(filter) ? sqlWhere : 
      sqlWhere + "AND (ContactId LIKE @filter)"; 

     string sqlOrderBy = "ORDER BY" + sortColumn + "" + sortOrder; 

     String sqlSelect = @" 
      SELECT Id 
      ,CreatedBy 
      ,CreatedOn 
      ,ModifiedBy 
      ,ModifiedOn 
      ,ContactId 
      ,EntityName 
      ,EntityId 
      ,ActivityType 
      ,ActivityStatus 
      ,DueDate 
      ,ActualEndDate 
      ,MasqueradeOn 
      ,MasqueradeBy 
     FROM UserActivity 
     #WHERE 
     #ORDERBY 
     LIMIT @PageSize OFFSET @PageNumber 
     "; 

     string sqlCount = @" 
     SELECT COUNT(Id) TotalCount 
     FROM UserActivity 
     #WHERE 
       "; 
     sqlCount = sqlCount.Replace("#WHERE", sqlWhere); 
     sqlSelect = sqlSelect.Replace("#WHERE", sqlWhere); 
     sqlSelect = sqlSelect.Replace("#ORDERBY", sqlOrderBy); 

     try 
     { 
      using (IDbConnection db = new MySqlConnection(ConfigurationManager.ConnectionStrings["CRMPORTALSQLCONN"].ConnectionString)) 
      { 
       userActivity = (List<UserActivityModels>)db.Query<UserActivityModels>(sqlSelect, new 
       { 
        @filter = "%" + filter + "%", 
        @PageSize = pageSize, 
        @PageNumber = (pageNumber - 1) * pageSize 
       }); 

       totalCount = (int)db.ExecuteScalar<int>(sqlCount, new 
       { 
        @filter = filter 
       }); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw new Exception("Unable to retrieve data from DB.", ex); 
     } 

     return View(userActivity); 

       } 

    //POST: /UserActivity/Index 
    [HttpPost] 
    public ActionResult Index(FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add insert logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

hatasından kaynaklandığını söyledi:

eylem yöntemi 'System.Web.Mvc.ActionResult Index arayamaz (Int32, Int32, System.String, Sistem İşte

benim Endeksi denetleyicisi olan .String, System.String, Int32 ByRef) 'denetleyicide' iCarAsia.SellerPortal.App.CRMPortal.Controllers.UserActivityController 'parametresi' Int32 & totalCount 'başvuru tarafından iletildiğinden.

Parametre adı: MethodInfo

Teşekkür

cevap

1

sizin hataya neden out int totalCount Bu parametre. İnternet üzerinden veri gönderiyorsunuz, referans ile bir parametreyi geçemiyorsunuz. Hatta derler ki şaşırır. Eğer TOTALCOUNT dönmek istiyorsanız, Json için serileştirip ActionResult devraldığı bir JsonResult ile dönecektir

public ActionResult Index(int pageNumber, int pageSize, string filter, string sortColumn, 
          string sortOrder) 
{ 
    int totalCount = ... 
    return Json(totalCount); 
} 

Bu kullanırlar.

+0

Hangi kısımda değişiklik yapmalıyım diye sorabilir miyim? Kodlama formatında demek istiyorum. Neden beni zaten – Botski

+0

@Botski Make 'totalCount '' viewmodel'in bir parçası haline getiriyor ve bunu –

+0

gibi aktarıyorsanız, totalCount'u public int TotalCount {get; set; } veya HTTp gönderisinde mi? – Botski

İlgili konular