区分页面首次加载,刷新,回发和使用生成的链接

时间:2014-06-24 13:46:13

标签: c# asp.net refresh postback pageload

介绍信息

当我开始这个问题时,我的主要目标是告诉第一次页面加载和页面刷新之间的区别,这样我就可以适当地设置页面组件的过滤器设置。

在深入研究了许多关于如何发现差异的帖子和文章之后,我发现我的案例与我遇到的所有内容略有不同。我确实提出了一个有效的解决方案。 实际问题位于帖子的底部

我的Web应用程序允许用户在页面上进行选择,以确定从数据库中提取哪些信息并将其显示在页面上。用户还可以在显示数据的组件上设置过滤器。


要求

  • 第一次访问某个页面时,不应设置任何过滤器。
  • 刷新页面时(例如:F5 ),应恢复过滤器。
  • 当使用链接(从应用程序生成)时,过滤器的设置应与链接页面相同。
  • post-back发生时,过滤器应保持不变。

我做了什么

首次加载页面并使用生成的链接时设置过滤器设置已经完成,但我必须检测它们,所以我没有覆盖它们。

我主要在Page_Load函数中处理此问题。

if (!IsPostBack){ // Happens on first page load, generated link, and page refresh
    if (Request.QueryString["gridLayout"] == null){ // Query strings are for link

        // Now check if first page load or page refresh
        // See if there are saved filters to load - yes means refresh
        if (this.Session["refreshStaticGridLayout"] != null && 
            !(this.Session["refreshStaticGridLayout"].ToString().Equals(""))){
            // Load the filter settings
            MainGrid.LoadClientLayout(
                this.Session["refreshStaticGridLayout"].ToString()); 
        }
    }
}
  • 使用query strings从生成的链接加载页面 - 基本上如果有query string,则继续使用。
  • 每次用户更改过滤器设置时,我都会设置Session变量来存储它们。

问题

我想知道是否有人认为这是一种逻辑上不好的方式,知道更好的方式,或者知道会破坏这种情况的角落案例。我问因为很多帖子关于如何处理检测页面刷新被明确标记为只是解决方法,似乎有很多黑暗的方法去做这件事。谢谢。


修改

我并不担心客户端过期的Session

0 个答案:

没有答案
相关问题