我有一个使用PagedList进行分页的MVC应用程序。第一列是一个复选框。如果用户选择一行,我希望在整个分页过程中保持这一点(即:用户选择第1页的第1行,然后转到第5页,然后返回第1页,我希望仍然检查第1行)。我似乎无法弄清楚如何在此基础上使用Ajax以实现解决方案。有什么想法吗?
@foreach (var appUser in Model)
{
<div class="row" style="border-bottom: 1px dotted black; font-size: 12px;">
<div class="one column alpha">
@Html.CheckBox("chkUser" + @appUser.appUserId)
</div>
<div class="two columns alpha">
<img src="@appUser.appUserProfileImage" alt="@appUser.appUserHandle" />
</div>
<div class="two columns omega">
@appUser.appUserHandle
</div>
<div class="four columns omega">
@appUser.appUserStatus
</div>
<div class="three columns omega" style="text-align: right;">
<input type="button" value="Mail @appUser.appUserHandle" id="btnMail" onclick="location.href='@Url.Action("MailUser", "Settings")';return false;" />
</div>
</div>
}
<br />
<div class="row">
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
</div>
<div class="row">
@Html.PagedListPager(Model, page => Url.Action("AppUsers", "Settings",
new { p = page, id = ViewBag.Id, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
</div>
答案 0 :(得分:0)
我正在考虑使用隐藏来保存所选项目的ID列表。 隐藏应该在容纳分页列表的容器之外(以避免覆盖它)。
因此,一旦完成选择项目,并在提交表单后,可以从隐藏中获取所选项目。
关于在返回该页面时保持项目选择的要求,您应该检查表格中的ID与隐藏中的已检查ID。如果找到它,请选中相应的复选框。这是通过jQuery完成的。
其他选项是,在每个页面更改时,您提交当前所选用户,并检查您的Razor代码(AKA服务器端)。我认为jQuery更好。