PagedListPager传递其他模型数据

时间:2013-01-16 10:24:17

标签: c# asp.net-mvc pagedlist

我有以下型号:

  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。

更改页面时如何保留复选框数据?

3 个答案:

答案 0 :(得分:8)

我得到了以下内容:

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

答案 1 :(得分:0)

到目前为止找到的最佳解决方案是:

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

是的,它有效。

答案 2 :(得分:0)

就我而言,模型是 PagedList.IPagedList。接下来,我使用存储在 ViewBag 中的“SearchModel”,以便它可以轻松传递。我需要更新的只是页码。

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