对于我的用户版本,我必须确保密码和重复密码相同。我找到了“比较”验证器,但我无法使它工作。Asp.Net MVC 3:在子属性上比较验证器?
我的模型如下所示:
public class UserEditionViewModel{
[Compare("User.Password")]
public String RepeatPassword{get;set;}
public User User {get;set;}
public List<Language> AvailableLanguages{get;set;}
public List<Country> AvailableCountries{get;set;}
}
和用户模式:
public class User{
[Required]
public String Name{get;set;}
//lot of other properties omitted...
[RegularExpression(@"(|.*(?=.{6,})(?=.*\d)(?=.*[a-zA-Z]).*)", ErrorMessageResourceType = typeof(LocalizationResources.Views.User.Edition), ErrorMessageResourceName = "InvalidPassword")]
//And I've localization attributes
public String Password{get;set;}
}
在视图中我只碰到这样的:
@Html.PasswordFor(m=>m.User.Password)
@Html.PasswordFor(m=>m.RepeatPassword)
但我得到这个错误,即使两个项目匹配:
'Password repeat' and 'User.Password' do not match.
我在进行客户端验证时也出现此错误。
对我来说最明显的错误是它找不到子属性。我对吗?如果是的话,如何避免这种行为。如果不是,会有什么问题?