复制问题:
- 使用服务器验证创建ASP.NET MVC 3页。
- 提交验证错误。
- 服务器验证错误以红色出现。
- 更正验证错误并再次提交,然后成功重定向到另一个报告页面。
- 单击"报告"页面上的"后退"按钮,验证错误消息仍在原始形式上显示。
单击"返回"按钮时,用户会很生气地看到服务器验证消息。
- 我不会考虑禁用后按钮的解决方案。
- 我不会考虑使用单击页面的解决方案后按钮。
我将在制作成功表单提交或任何其他有效解决方案之前考虑服务器验证消息消失。
谢谢
以下是清除历史记录的一些方法,以便返回按钮不会显示记忆的页面:http://www.codeproject.com/tips/tips/135121/browser-browser-back-back-back-back-back-back-back-back-back-back-back-bact-back-bact-back-button-issue--后期
要避免看到验证消息,我禁用缓存,因此当用户单击返回按钮时,浏览器将自动重新加载页面。但是,如果以前使用POST
方法提交该页面,则用户会看到表单重新提交警告。为了解决此问题,如果ModelState无效,我使用JavaScript window.history.back()
将POST
请求更改为先前的GET
请求。
这是细节...
在控制器中创建两个函数:一个带有[HttpGet]
属性的功能,一个带有[HttpPost]
属性。
在HttpPost
版本中,添加以下逻辑...
- 如果ModelState无效,请将ModelState并形式/模型数据保存到Tempdata
-
返回一个简单的视图,其中包含javaScript如下。
< html><身体>< script> window.history.back();</script></body></html>
在HttpGet
版本中,
- 添加属性
[OutputCache(NoStore = true, Duration = 0)]
- 将逻辑添加到加载模型状态和来自tempdata的模型数据
- 将模型数据传递到查看