使用AJAX for PagedList的ClientSide更新

时间:2013-11-19 22:06:42

标签: ajax asp.net-mvc jquery razor pagedlist

我有一个使用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>

1 个答案:

答案 0 :(得分:0)

我正在考虑使用隐藏来保存所选项目的ID列表。 隐藏应该在容纳分页列表的容器之外(以避免覆盖它)。

因此,一旦完成选择项目,并在提交表单后,可以从隐藏中获取所选项目。

关于在返回该页面时保持项目选择的要求,您应该检查表格中的ID与隐藏中的已检查ID。如果找到它,请选中相应的复选框。这是通过jQuery完成的。

其他选项是,在每个页面更改时,您提交当前所选用户,并检查您的Razor代码(AKA服务器端)。我认为jQuery更好。