介绍信息
当我开始这个问题时,我的主要目标是告诉第一次页面加载和页面刷新之间的区别,这样我就可以适当地设置页面组件的过滤器设置。
在深入研究了许多关于如何发现差异的帖子和文章之后,我发现我的案例与我遇到的所有内容略有不同。我确实提出了一个有效的解决方案。 实际问题位于帖子的底部。
我的Web应用程序允许用户在页面上进行选择,以确定从数据库中提取哪些信息并将其显示在页面上。用户还可以在显示数据的组件上设置过滤器。
要求
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
。