【问题标题】:Clear server validation message before submit提交前清除服务器验证消息
【发布时间】:2012-10-15 06:23:24
【问题描述】:

复制问题:

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

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

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

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

谢谢

【问题讨论】:

  • 但是您仍然想要带有提交行为的 BACK BUTTON 吗?奇怪

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    这里是详细信息...

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

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

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

    HttpGet 版本中,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 2021-03-08
      • 2012-11-09
      相关资源
      最近更新 更多