2016-09-22 21 views
1

こんにちは私はMVCアプリケーションでページングを実装しており、ソート機能を実装しています。ヘッダー(ActionLink)をクリックするとソートします。これは私のページャのコードです。MVC4ソートで現在のページ番号を送信するには?

@Html.PagedListPager(Model.logDetails, page => Url.Action("Index", 
new { page, currentFilter = ViewBag.CurrentFilter, filterdateTime=ViewBag.filterdateTime, filterdocType= Model.doc_typeid, filteredemployeeID = Model.employeeID, filteredcitizenId = Model.citizenId, sortOrder = ViewBag.currentSort })) 
       Page @(Model.logDetails.PageCount < Model.logDetails.PageNumber ? 0 : Model.logDetails.PageNumber) of @Model.logDetails.PageCount 

これは私がソートしたいと思う私のヘッダーです。

<th>@Html.ActionLink("Label", "Index", new { sortOrder = ViewBag.LabelSortParm, currentFilter = ViewBag.CurrentFilter, filterdateTime = ViewBag.filterdateTime, filterdocType = Model.doc_typeid, filteredemployeeID = Model.employeeID, filteredcitizenId = Model.citizenId, Page })</th> 

ここでは、現在のページ番号をアクションメソッドに戻すことに問題があります。現在のページ番号以外のすべての値をアクションメソッドに返すことができます。私はActionLinkでpagenumberをどうやって取得して送ることができますか?前もって感謝します。

答えて

1

あなたの一番下にあるかみそりのページは、ページのナビゲーションのためにそこにあるはずです。その場合は、pageというパラメータを注意してください。 UIからナビゲーション要求が行われたときに、コントローラ・アクション結果メソッドにこの現在のカウントが渡されます。

<!--Grid/Page navigations goes here--> 
<br /> 
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount 
@Html.PagedListPager(Model, page => Url.Action("List", new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter })) 

コントローラロジックをこのようにするのと同じ方法です。ここでもpageというパラメータを見てください。現在のページ番号を常に保持しています。私たちはUIから渡った。デフォルトでは、私は0または1になります。

public ViewResult List(string sortOrder, string currentFilter, string searchString, int? page, ManageMessage? message) 
    { 
      ViewBag.CurrentSort = sortOrder; 
      ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "Name_desc" : ""; 
      if (searchString != null) { page = 1; } 
      else { searchString = currentFilter; } 

      ViewBag.CurrentFilter = searchString; 

      var company = getComoanyList(); 

      switch (sortOrder) 
      { 
       case "Name_desc": 
        company = company.OrderByDescending(s => s.Name); 
        break; 
       default: 
        company = company.OrderBy(s => s.Name); 
        break; 
      } 

      int pageSize = 10; 
      int pageNumber = (page ?? 1); 
      return View(company.ToPagedList(pageNumber, pageSize)); 
    } 

これが役に立ちます。

+1

はい、助かりました。どうもありがとう –

関連する問題