【问题标题】:Custom ErrorMessage for Compare attribute does not work比较属性的自定义错误消息不起作用
【发布时间】:2013-11-14 12:57:59
【问题描述】:

重现步骤:

  1. 使用个人用户帐户创建一个新的 MVC 5 项目。
  2. 查看RegisterViewModel 中为ConfirmPassword 属性指定的ErrorMessage。是“密码和确认密码不匹配”。
  3. 构建并运行应用程序,并尝试使用不匹配的密码进行注册。我将看到错误消息“'Confirm password' and 'Password' do not match.”,而不是模型中指定的错误消息。

似乎Compare 属性上的自定义ErrorMessage 属性不起作用。即使我指定了 ErrorMessage,验证仍然会显示某种默认消息。

这适用于System.Web.Mvc.CompareAttribute,但现在已弃用,您应该改用System.ComponentModel.DataAnnotations.CompareAttribute,这表明了这个问题。

我将Compare 属性添加到属性并指定ErrorMessage,如下所示:

[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match. I'll even add some random text!")]
public string ConfirmPassword { get; set; }

预期的结果是(但这不是我得到的):

相反,我收到此“默认”错误消息:

客户端验证已禁用。我错过了什么吗?此示例取自 MVC 5 模板,其中以个人用户帐户作为身份验证。

【问题讨论】:

  • 为什么你确定它被禁用了?以及它与您期望的结果有什么关系?
  • 我假设您的意思是客户端验证?我已将 web.config 更改为 <add key="ClientValidationEnabled" value="false" />,如果我在开发人员工具中检查 Net 面板,我可以看到回发以及响应 HTML 中的错误消息。
  • 那么,有什么问题呢?你说你已经添加了验证,你希望它和图片上的一样,但你对此并不满意。
  • 我展示了一张我希望它如何的图片。我得到的如下图所示,这不是我所期望的。我会澄清的。
  • 我认为你没有很好地搜索,同样的问题是 [here][1] 如果这有帮助,请告诉我。 [1]:stackoverflow.com/questions/4938078/…

标签: c# asp.net-mvc asp.net-mvc-5 compare-attribute


【解决方案1】:

我也有同样的问题,解决办法:

变化:

[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]

收件人:

[System.Web.Mvc.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]

它正在工作!

【讨论】:

  • 是的,我知道,但这似乎是一个糟糕的解决方法,因为 System.Web.Mvc.Compare 已被弃用。
【解决方案2】:

我认为这是一个错误。 (编辑:是的。)我也能够重现这一点。实际上,打开客户端验证时的行为完全相同。如果您查看生成的 HTML,您会发现它甚至没有生成自定义错误字符串 - 它始终发出默认错误字符串。

实际上,我刚刚四处搜索以查找更多信息,我发现它已作为 codeplex 上的错误提交。 8天前上报了,已经有人指派了。你可以找到错误报告here

【讨论】:

  • 当时我的 Google-fu 似乎有点让我失望,但非常感谢您找到错误报告!
  • @JLe 没问题。 :) 可惜这不是你想听到的。
【解决方案3】:

这是 2013 年的 old bug。尝试使用以下命令更新所有 project's dependencies

PM> update-package

【讨论】:

    【解决方案4】:

    改用 System.ComponentModel.DataAnnotations.Compare。 由于 System.Web.Mvc.Compare 已过时,上述比较属性的作用相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2014-10-25
      • 2021-02-02
      • 1970-01-01
      • 2015-12-07
      • 2013-11-27
      • 2019-12-16
      相关资源
      最近更新 更多