2016-03-23 10 views
0

私はasp.net MVCをやっていますインデックスを表示したい、私はこのメソッドを呼び出すことに問題があります。アクションメソッド 'System.Web.Mvc.ActionResultを呼び出すことができません。インデックス(Int32、Int32、System.String、System.String、System.String、Int32 ByRef)

私は間違っていると誰かが言うことができますか?ここで

が私のインデックスコントローラです:

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(); 
     } 
    } 

エラーは言った:

はアクションメソッド「System.Web.Mvc.ActionResult指数(のInt32、のInt32、可能System.String、システムを呼び出すことはできません'Int32 & totalCount'パラメータが参照渡しされたため、コントローラ 'iCarAsia.SellerPortal.App.CRMPortal.Controllers.UserActivityController'の '.String、System.String、Int32 ByRef)

パラメータ名:METHODINFO

おかげ

答えて

1

あなたのエラーが発生しout int totalCountこのパラメータ。あなたはインターネット経由でデータを送信しており、参照によってパラメータを渡すことはできません。コンパイルしても驚いています。あなたのトータルカウントを返すようにしたい場合は、JSONにデータをシリアル化し、ActionResultから継承JsonResultでそれを返します

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

これを使用しています。

+0

どのような部分を変更する必要がありますか?私はコーディング形式を意味します。私には既に不満を感じています。 – Botski

+0

@Botskiあなたのビューモデルの 'totalCount'部分を作り、そのように渡します。 –

+0

私は私のモデルにtotalCountを置くべきですか?public int TotalCount {get;セット; }またはHTTpの投稿で? – Botski

関連する問題