我有以下型号:
public class PagedClientViewModel
{
public int? Page { get; set; }
public PagedList.PagedList<ClientViewModel> Clients { get; set; }
public bool ShowAllClients { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ShowAllClients是一个复选框,我将用它来进一步过滤从服务器返回的客户端列表.
@Html.CheckBoxFor(model => model.ShowAllClients, new { id = "ShowAllClientsCheckbox" })
Run Code Online (Sandbox Code Playgroud)
这是我的寻呼机:
@Html.PagedListPager(Model.Clients, page => Url.Action("Index", new { Page = page }), PagedListRenderOptions.DefaultPlusFirstAndLast)
Run Code Online (Sandbox Code Playgroud)
寻呼机和复选框都在同一表格上.
我遇到的问题是,当我在寻呼机控件上更改页面时,复选框始终设置为false.发生这种情况是因为在Index操作中,ShowAllClients设置为false.
更改页面时如何保留复选框数据?
我有一个视图模型对象,其中包含List另一个模型对象类型.当用户在页面上执行查询时,如果List返回的包含超过300条记录,我们希望使用分页来减少加载时间(某些搜索结果可以返回超过14k条记录).我们正在使用的分页插件可以在这里找到.
一旦结果显示在页面上,用户就可以单击特定结果旁边的复选框,在输入文本框中键入一些信息,点击提交,并使用文本中的信息编辑选定的记录框.
因为我们需要使用a IPagedList<>才能启用分页,但是当你点击提交时(在页面甚至命中控制器之前),我们会收到以下错误:
Cannot create an instance of an interface.
Run Code Online (Sandbox Code Playgroud)
查看模型
这些是我们用于分页的两个列表对象.该zipCodeTerritory对象包含查询的结果.的pagedTerritoryList用于显示仅该特定页面的用户是对的结果.
//Paging List objects
public IPagedList<ZipCodeTerritory> pagedTerritoryList { get; set; }
public List<ZipCodeTerritory> zipCodeTerritory { get; set; }
public IPagedList PagingMetaData { get; set; }
Run Code Online (Sandbox Code Playgroud)
调节器
这是我们的基本搜索.该.ToPagedList方法用于指定我们想要显示的结果范围并将它们放在pagedTerritoryList对象中.
//set Paged List counter variables
int pageNumber = page ?? 1;
int pageSize = 300;
//Determine if Territory present?
if (string.IsNullOrWhiteSpace(search.searchTerritory))
{
//State Code ONLY search
search.zipCodeTerritory …Run Code Online (Sandbox Code Playgroud)