2016-09-22 5 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> 

Здесь у меня возникла проблема с отправкой текущего номера страницы обратно в действие. Все значения, которые я могу отправить обратно методу действия, кроме текущего номера страницы. Может ли кто-нибудь сказать мне, как я могу получить и отправить pagenumber в ActionLink? Заранее спасибо.

ответ

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

Да, это помогло. большое спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^