我有一个简单的 ListView,由 DataPager 分页,提供产品列表。当我们点击产品时,我们会打开产品详细信息页面。在详细信息页面上,我们希望“返回产品列表”,但当然我们希望它记住数据分页器所在的页面。
当然,这被认为是一种自然的设计要求——开箱即用的简单方法是什么?
如果我们使用 DataPager 的 QueryStringField 属性,我们会在 URL 中获得页码,所以我希望我可以在反向链接中使用引荐来源网址,但我发现 Request.UrlReferrer 不可靠(当我使用 F5 调试应用程序时)例如,在 Internet Explorer 中,Request.UrlReferrer 始终为空)。
我发现将页码存储在会话变量中取得了一些成功:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session["PagerIndex"] != null)
{
DataPager1.SetPageProperties((int)Session["PagerIndex"],
DataPager1.MaximumRows, false);
}
}
}
protected void DataPager1_PreRender(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
Session["PagerIndex"] = DataPager1.StartRowIndex;
}
}
这种方法有一些缺点:
- 仅当 QueryStringField 为空白时才有效(因此可以检测到 IsPostBack)
- 每个寻呼机所需的会话/cookie 变量
- 出现了如何重置会话/cookie 变量的问题
这样做的“正确”方法是什么?
谢谢