作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以看到,我自己和很多人都在 ASP.NET 中的这两个项目上遇到了麻烦...刷新按钮、后退按钮...(我看到很多人都在问如何禁用这两个按钮在浏览器中..)
现在在 Page 中实现另外两个 bool 变量(IsRefresh、IsPostBack)有什么问题...如果这些问题可以被规避并实现,这对开发人员来说将是一笔巨大的财富...
当您回答时,如果您还可以在网络应用程序中包含您正在采取的步骤,以避免在这种情况下重新发布(有时在数据库中),那将会很有帮助。
谢谢
最佳答案
实现两个附加 bool 属性的问题是,确实没有(可靠的)方法来区分 Back/Refresh 触发的请求。当点击这些按钮时,浏览器将:
您遇到的是情况#2。当第二个请求发生时,服务器将收到与原始请求完全相同的请求数据。因此,ASP.NET(以及大多数其他框架)将像处理原始请求一样处理该请求。有多种方法可以解决此问题:
ViewState
中的数据),其中包含预期回发的页面上的唯一值。然后添加一些数据结构来保留“已使用”值的列表,以及在执行任何关键操作之前测试重复项的逻辑。POST
请求永远不会出现在浏览器历史记录中。解决方案 #3 非常简单,几乎适用于所有情况。基本上,不是返回结果/确认作为对“关键”回发的回复,而是重定向到新的 URL:
protected void btnCritical_Click(object sender, EventArgs e)
{
DoSomethingThatShouldNotBeDoneTwice();
Response.Redirect("confirmation.aspx");
}
关于asp.net - 为什么不像 'IsRefresh' 一样实现 'IsBackPost' 、 'IsPostBack' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2271380/
我可以看到,我自己和很多人都在 ASP.NET 中的这两个项目上遇到了麻烦...刷新按钮、后退按钮...(我看到很多人都在问如何禁用这两个按钮在浏览器中..) 现在在 Page 中实现另外两个 boo
我是一名优秀的程序员,十分优秀!