2016-09-22 57 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的参数。当用户界面发出导航请求时,会将当前计数传递给控制器​​操作结果方法。

<!--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

是的,它帮助。非常感谢 –

相关问题