ASP.NET mvc 3分页/跟踪最后一页

时间:2012-11-09 15:14:54

标签: asp.net pagination

我是asp新手,编写了一个项目,它将连接到数据库,检索数字记录,然后在分页表中将这些记录呈现给用户。然后,用户可以单击要编辑的记录,进行编辑,保存更改并返回到原始表视图。更新页面是强类型的。

我正在努力跟踪上次查看哪个分页页面,然后导航回去。即如果用户在第5页(共10页),则他们会从第5页更新记录,当保存编辑时,表格会再次显示,但它已经返回到第1页。跟踪最后一个的最佳方法是什么分页?

任何帮助表示感谢。

克里斯

3 个答案:

答案 0 :(得分:0)

通常我会在表单提交中传递页码,然后在保存后重定向,将其作为查询字符串的一部分传递,这样您的操作就可以将正确的数据页面提供给视图。

这也允许用户为特定页面添加书签,这可能很有用,甚至可以在必要时刷新当前页面,而不会丢失它们的位置。

如果该功能可用,您可能还需要传递排序信息。

答案 1 :(得分:0)

我发现将它保存在viewstate中很好: 例如:

ViewState(“paging”)= 1

答案 2 :(得分:0)

最后,我在服务器上使用会话cookie来跟踪显示的页面和上次搜索。这意味着我可以在页面/控制器之间导航,并跟踪每个页面中显示的页面,并且不需要传递大量参数。我添加了一个新类:

public class SearchModel 
{
    public string TargetController { get; set; }
    public string TargetMethod { get; set; }
    public string OriginalSearchCriteria { get; set; }
    public string NewSearchCriteria { get; set; }
    public int Page { get; set; }

    public void SetCriteria(String newCriteria, int pageIn)
    {

        if (!newCriteria.Equals(OriginalSearchCriteria))
        {
            OriginalSearchCriteria = newCriteria;
            Page = 1;
        }
        else
        {
            Page = pageIn;
        }
    }

    public void SetPage(int newPage)
    {
        if (newPage != 0)
            Page = newPage;

    }


}

在我刚刚添加的控制器中:

private SearchModel GetSearch()
    {
       SearchModel search = (SearchModel)Session["CgRefCodeSearch"];
       if (search == null)
       {
          search = new SearchModel();
          search.Page = 1;
          search.OriginalSearchCriteria = "";
          Session["CgRefCodeSearch"] = search;
        }
        return search;
     }

在控制器中的每个功能上,我可以参考:

GetSearch().SetPage(page);
CurrentPage = GetSearch().Page etc...

这是基于Adam Freeman撰写的Pro ASP.NET MVC 3框架第三版中的内容。史蒂文桑德森。它非常简单,但工作正常。