我无法本地化验证:'确认密码'和'密码'不匹配。在MVC 5中
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] //Why not display this message???????
public string ConfirmPassword { get; set; }
请帮我定位。
答案 0 :(得分:14)
您有2个选项可以解决此错误:
- 选项1
变化:
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
到
[System.Web.Mvc.Compare("Password", ErrorMessage = "Your custom error message")]
- 选项2 (我推荐这个)
我们需要更新ASP.NET MVC 5.在Visual Studio中,转到Package Manager控制台并输入:
PM> update-package
你在:
中得到一个错误public ApplicationDbContext()
: base("DefaultConnection")
{
}
该错误是由MVC 5的内部结构中的更新引起的。要解决该错误,请执行以下操作:https://stackoverflow.com/a/23090099/2958543
答案 1 :(得分:6)
这似乎是一个已知问题,目前无法正常运作 - http://aspnetwebstack.codeplex.com/workitem/1401。
但是,临时解决方法是使用System.Web.Mvc中的Compare属性,该属性已标记为过时。这是一个例子:
using CompareObsolete = System.Web.Mvc.CompareAttribute;
...
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[CompareObsolete("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
我目前正在使用此解决方法,直到官方修复程序可用。一切都工作得很好 - 我使用这个属性来使用资源本地化错误消息。
一旦官方修复程序发布,请不要忘记更新它。
编辑:此问题已在最新版本中修复。