PagedListPager передает дополнительные данные модели

У меня есть следующая модель:

  public class PagedClientViewModel
    {
        public int? Page { get; set; }
        public PagedList.PagedList<ClientViewModel> Clients { get; set; }               
        public bool ShowAllClients { get; set; }
    }

ShowAllClients — это флажок, который я буду использовать для дальнейшей фильтрации списка клиентов, возвращенных с сервера.

 @Html.CheckBoxFor(model => model.ShowAllClients, new { id = "ShowAllClientsCheckbox" })

Вот мой пейджер:

@Html.PagedListPager(Model.Clients, page => Url.Action("Index", new { Page = page }), PagedListRenderOptions.DefaultPlusFirstAndLast)

И пейджер, и флажок находятся в одной форме.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я меняю страницу в элементе управления пейджером, для флажка всегда устанавливается значение false. Это происходит из-за того, что в действии Index параметр ShowAllClients имеет значение false.

Как мне сохранить данные флажка при смене страниц?


person woggles    schedule 16.01.2013    source источник


Ответы (3)


Я получил это для работы со следующим:

 @Html.PagedListPager(Model.Clients, page => Url.Action("Index", new PagedClientViewModel { Page = page, ShowAllClients = Model.ShowAllClients }))
person woggles    schedule 24.01.2013

Лучшее решение, если оно найдено до сих пор:

@Html.PagedListPager(Model.Clients, page => Url.Action("Index", new { Page = page, param1="",param2="" }), PagedListRenderOptions.DefaultPlusFirstAndLast)

И да, это работает.

person anil shrestha    schedule 11.04.2019
comment
Спасибо за быстрое и простое решение. - person ; 07.07.2020

В моем случае Модель — это PagedList.IPagedList. Кроме того, я использую SearchModel, который храню в ViewBag, чтобы его можно было легко передать. Все, что мне нужно обновить, это номер страницы.

@Html.PagedListPager(Model, page =>
{
    ViewBag.SearchModel.Page = page;
    return Url.Action("Index", "Search", ViewBag.SearchModel);
})
person Michiel    schedule 23.01.2021