提交前清除服务器验证消息

时间:2012-10-25 05:46:09

标签: asp.net asp.net-mvc-3 validation message clear

要复制此问题:

  1. 使用服务器验证创建ASP.NET MVC 3页面。
  2. 提交验证错误。
  3. 服务器验证错误显示为红色。
  4. 更正验证错误并再次提交,然后再提交 重定向到另一个报告页面。
  5. 单击报告页面上的“返回”按钮时,验证错误 消息仍显示在原始表单上。
  6. 用户在单击后退按钮时看到服务器验证消息时感到恼火。

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

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

    由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

以下是详细信息......

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

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

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

    < HTML> <身体GT; <脚本> window.history.back(); < /脚本> < /体> < / HTML>

  3. HttpGet版本中,

    1. 添加属性[OutputCache(NoStore = true, Duration = 0)]
    2. 添加逻辑以从TempData
    3. 加载ModelState和模型数据
    4. 将模型数据传递给View