【问题标题】:ASP.NET mvc 3 Pagination / Keeping track of last pageASP.NET mvc 3 分页/跟踪最后一页
【发布时间】:2012-11-09 15:14:53
【问题描述】:

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

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

任何帮助表示赞赏。

克里斯

【问题讨论】:

标签: asp.net pagination


【解决方案1】:

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

这还允许用户为特定页面添加书签,这很有用,或者甚至在必要时刷新当前页面,而不会失去他们的位置。

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

【讨论】:

  • 我确实试过这个。我可以毫无问题地将当前分页页面传递到编辑页面。保存编辑后,我无法将该值传递回控制器。编辑页面是严格输入的,保存只是一个提交努力为这个调用添加一个额外的参数:@using (Html.BeginForm("IndexEdit", "CgRefCodes", FormMethod.Post, new { id = "target"} ))
【解决方案2】:

我发现将它保存在视图状态中很好: 例如:

ViewState("paging") = 1

【讨论】:

    【解决方案3】:

    最后,我在服务器上使用了会话 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 Framework 第三版中阅读的内容;史蒂文·桑德森。它真的很简单,但工作正常。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2014-01-10
      • 2011-01-12
      • 2011-05-10
      • 1970-01-01
      • 2013-12-07
      • 2016-05-19
      • 2020-12-25
      • 1970-01-01
      相关资源
      最近更新 更多