Ajax分页,页面刷新后的行为不正确

时间:2012-01-12 15:09:10

标签: asp.net-mvc asp.net-mvc-3 jquery razor

我有一个带有ajax分页的表,我可以选择任何页面和查看数据,但如果我在浏览器中按下刷新,它会显示第一页。刷新后我怎么能待在同一个桌面上?

这是代码的一部分。

@using (Ajax.BeginForm(new AjaxOptions() { UpdateTargetId = "users_rows", Url = Url.Action("UsersRows") }))
    {
        <table>
            <thead>
            <tr>
                <th>@Resources.Id</th>
                <th>@Resources.Login</th>
                <th>@Resources.Password</th>
                <th>@Resources.FirstName</th>
                <th>@Resources.LastName</th>
                <th>@Resources.Birthday</th>
                <th>@Resources.IsActive</th>
                <th>@Resources.Role</th>
                <th>@Resources.RegistrationDate</th>
            </tr>
            </thead>
            <tbody id="users_rows">
                @Html.Partial("UsersRows", Model)
            </tbody>
        </table>
    }
    @Html.Partial("Pager", Model)

Pager.cshtml:

@model UserManagmentStudio.Domain.IPager

@if (Model.PageCount > 1)
{
    for (Int32 i = 1; i <= Model.PageCount; i++)
    {
        @Ajax.ActionLink(i.ToString(), "Index", new {page = i},
            new AjaxOptions()
           {
               UpdateTargetId = "users_rows",
               Url = Url.Action("UsersRows", new { page = i }),
           }
        )
        @:&nbsp
    }

}

2 个答案:

答案 0 :(得分:0)

没有办法实现这一点,因为您使用AJAX进行分页,因此从不重新加载当前页面。如果你删除了AJAX调用并为你的分页执行完整的回发,浏览器的url将会更新,如果用户点击<kbd>F5</kbd>,他将不会忘记当前页面的跟踪,因为它将成为查询字符串的一部分

答案 1 :(得分:0)

刷新后会恢复默认行为。您可以将当前用户的页面存储在cookie中,然后将其作为参数传递给寻呼机。您必须为每个唯一页面用户访问存储cookie - 它不包括寻呼机页面,因为它是相同的。好消息是你不需要在用户离开后保留cookie。

除此之外,没有办法做到这一点。