0

要复制问题:

  1. 创建一个带有服务器验证的 ASP.NET MVC 3 页面。
  2. 提交验证错误。
  3. 服务器验证错误以红色显示。
  4. 更正验证错误并再次提交,然后成功重定向到另一个报告页面。
  5. 单击报告页面上的返回按钮时,验证错误消息仍显示在原始表单上。

用户在单击后退按钮时看到服务器验证消息感到恼火。

  • 我不会考虑禁用后退按钮的解决方案。
  • 我不会考虑在单击后退按钮时刷新页面的解决方案。

在成功提交表单或任何其他有效解决方案之前,我会考虑服务器验证消息消失。

谢谢

4

2 回答 2

0

为了避免看到验证消息,我禁用了缓存,这样当用户单击后退按钮时浏览器会自动重新加载页面。但是,如果页面之前使用POST方法提交,用户会看到表单重新提交警告。为了解决这个问题,如果 ModelState 无效,我使用 javascriptwindow.history.back()将请求更改POST回先前的请求。GET

以下是详细信息...

在控制器中创建两个函数:一个带有[HttpGet]属性,一个带有[HttpPost]属性。

HttpPost版本中,添加以下逻辑...

  1. 如果 ModelState 无效,将 ModelState 和表单/模型数据保存到 TempData
  2. 返回一个包含 javascript 的简单视图,如下所示。

    <html> <body> <script>window.history.back(); </script> </body> </html>

HttpGet版本中,

  1. 添加属性[OutputCache(NoStore = true, Duration = 0)]
  2. 添加逻辑以从 TempData 加载 ModelState 和模型数据
  3. 将模型数据传递给 View
于 2013-03-06T08:07:38.960 回答
0

以下是一些清除历史记录的方法,以便后退按钮不会显示记住的页面: http: //www.codeproject.com/Tips/135121/Browser-back-button-issue-after-logout

于 2012-10-25T06:51:07.690 回答