【发布时间】:2013-11-14 12:57:59
【问题描述】:
重现步骤:
- 使用个人用户帐户创建一个新的 MVC 5 项目。
- 查看
RegisterViewModel中为ConfirmPassword属性指定的ErrorMessage。是“密码和确认密码不匹配”。 - 构建并运行应用程序,并尝试使用不匹配的密码进行注册。我将看到错误消息“'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