首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较属性的自定义ErrorMessage不起作用

比较属性的自定义ErrorMessage不起作用
EN

Stack Overflow用户
提问于 2013-11-14 20:58:00
回答 4查看 14.1K关注 0票数 20

重现步骤:

  1. 使用单个用户帐户创建一个新的MVC5项目。
  2. 查看在RegisterViewModel中为ConfirmPassword属性指定的ErrorMessage。它是“密码和确认密码不匹配。”。
  3. 构建并运行应用程序,并尝试使用不匹配的密码进行注册。我将显示错误消息“‘确认密码’和‘密码’不匹配。”,而不是模型中指定的错误消息。

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

这适用于System.Web.Mvc.CompareAttribute,但现在这是不推荐使用的,您应该改用System.ComponentModel.DataAnnotations.CompareAttribute,这会显示此问题。

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

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

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

相反,我得到了这个“默认”的错误消息:

客户端验证已禁用。我是不是遗漏了什么?此示例取自MVC5模板,使用单个用户帐户作为身份验证。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-16 03:19:08

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

实际上,我刚刚搜索了一下,想找到更多的信息,我发现它已经在codeplex上作为一个bug提交了。这是8天前报告的,已经有人被指派了。您可以找到错误报告here

票数 8
EN

Stack Overflow用户

发布于 2013-11-16 00:11:46

我也有同样的问题和解决方案:

更改:

代码语言:javascript
复制
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]

至:

代码语言:javascript
复制
[System.Web.Mvc.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]

起作用了!

票数 16
EN

Stack Overflow用户

发布于 2014-05-11 20:14:44

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

代码语言:javascript
复制
PM> update-package
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19978239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档