【问题标题】:ClientSide Update Using AJAX for PagedList使用 AJAX 对 PagedList 进行客户端更新
【发布时间】:2013-11-19 22:06:42
【问题描述】:

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

【问题讨论】:

  • 你的要求是让它在视觉上出现,或者它只是为了一旦你点击某个东西它就会发送所有选定的 id 或类似的东西?

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    相关资源
    最近更新 更多