检测没有视图状态的页面刷新
Posted
技术标签:
【中文标题】检测没有视图状态的页面刷新【英文标题】:Detecting page refresh without viewstate 【发布时间】:2010-11-12 13:07:15 【问题描述】:有没有一种方法可以在不使用 asp.net webforms 中的 viewstate 的情况下检测页面刷新?我想知道这是否可能,因为例如 asp.net mvc 不使用视图状态。
我试图避免一起使用视图状态来保持我的页面大小。
【问题讨论】:
你的意思是“F5”的页面刷新?还是您的意思是某个页面上的 HTTP GET 方法? 我的意思是 F5 或用户重新加载页面 【参考方案1】:IsPostBack 不起作用,因为它是 F5 或 Pager 刷新案例,而不是任何事件的回发。
【讨论】:
【参考方案2】:您可以使用IsPostBack
在服务器端检测页面刷新。实际上,您在代码隐藏中放入Page_Load
的任何代码都会在每次刷新页面时运行。还是我误解了你的问题?
【讨论】:
【参考方案3】:为什么不能在页面中禁用 ViewState 的情况下在后面的代码中使用 IsPostback?这样你就可以在后面的代码中做任何你需要的事情,而不必担心 ViewState 会阻塞你的页面大小。
您可以通过将 enableViewState 标志添加到 @Page 指令来禁用页面中的 ViewState。
我能想到的唯一另一件事是有一段 javascript 代码来捕捉 F5 的按键,但显然这只会捕捉 F5 刷新而不是刷新按钮刷新。
本网站展示了如何使用 Javascript 捕获按键:http://www.go4expert.com/forums/showthread.php?t=2733
【讨论】:
【参考方案4】:http 协议是无状态的,并且在将响应发送给请求集之后,它会删除他的所有跟踪,除了他的会话。 webforms 的工作方式是它序列化您的页面状态并将其发送到客户端,然后在您进行回发(表单发布请求)时将其发送回服务器。因此,您可以在他的会话中保存有关他之前访问过的页面的客户信息,然后在他再次请求同一页面时签入会话。
【讨论】:
以上是关于检测没有视图状态的页面刷新的主要内容,如果未能解决你的问题,请参考以下文章
如何在不刷新页面的情况下检测第三方 cookie 被阻止; [?]