检测没有视图状态的页面刷新

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 的工作方式是它序列化您的页面状态并将其发送到客户端,然后在您进行回发(表单发布请求)时将其发送回服务器。因此,您可以在他的会话中保存有关他之前访问过的页面的客户信息,然后在他再次请求同一页面时签入会话。

【讨论】:

以上是关于检测没有视图状态的页面刷新的主要内容,如果未能解决你的问题,请参考以下文章

为啥刷新页面后没有检测到Vuex? (努努特)

如何在不刷新页面的情况下检测第三方 cookie 被阻止; [?]

使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)

反应 |如何检测页面刷新 (F5)

asp.net中如何使控件内容在本页面跳转不刷新

如何使用 AJAX 以编程方式刷新视图页面?