0

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

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

任何帮助表示赞赏。

克里斯

4

3 回答 3

0

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

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

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

于 2012-11-09T15:17:08.527 回答
0

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

ViewState("分页") = 1

于 2012-11-09T23:39:02.157 回答
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 Framework 第三版中阅读的内容;史蒂文·桑德森。它真的很简单,但工作正常。

于 2012-11-19T16:38:42.260 回答