重现的步骤:
ErrorMessage
属性RegisterViewModel
中指定的ConfirmPassword
。它是“密码和确认密码不匹配。”。似乎ErrorMessage
属性上的自定义Compare
属性无效。即使我指定了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模板,其中个人用户帐户作为身份验证。
答案 0 :(得分:14)
我有同样的问题,解决方案:
更改:
[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.")]
它正在运作!
答案 1 :(得分:8)
我认为这是一个错误。 (编辑:是的。)我也能够重现这一点。事实上,启用客户端验证的行为完全相同。如果你看一下生成的HTML,你会发现它甚至没有生成自定义错误字符串 - 它总是会发出默认错误字符串。
实际上,我刚刚搜索了一下以查找更多信息,我发现它已作为codeplex上的错误提交。据报道,8天前有人被分配到它。您可以找到错误报告here。
答案 2 :(得分:7)
2013年为old bug。请尝试以下命令更新所有project's dependencies:
PM> update-package
答案 3 :(得分:-1)
请改用System.ComponentModel.DataAnnotations.Compare。 由于System.Web.Mvc.Compare已过时,因此上述compare属性执行相同的工作。