Asp.net mvc MVC验证属性
在验证强类型视图模型时,如何使用验证属性验证类 假设您有这样一个视图模型:Asp.net mvc MVC验证属性,asp.net-mvc,validation,Asp.net Mvc,Validation,在验证强类型视图模型时,如何使用验证属性验证类 假设您有这样一个视图模型: [PropertiesMustMatch("Admin.Password", "Admin.ConfirmPassword")] public class AdminsEditViewModel { public AdminsEditViewModel() { this.Admin = new Admin(); // this is an Admin class } pu
[PropertiesMustMatch("Admin.Password", "Admin.ConfirmPassword")]
public class AdminsEditViewModel
{
public AdminsEditViewModel()
{
this.Admin = new Admin(); // this is an Admin class
}
public IEnumerable<SelectListItem> SelectAdminsInGroup { get; set; }
public IEnumerable<SelectListItem> SelectAdminsNotInGroup { get; set; }
public Admin Admin { get; set; }
}
因为密码字段是Admin类的属性,而不是AdminsEditViewModel。如何使它深入到很多层次,直到在ViewModel AdminsEditViewModel中找到Admin属性?
谢谢您需要修改
属性mustmatchAttribute
类来解析属性名称并进行深入搜索
此属性不是框架的一部分;它包含在默认MVC模板中(在AccountModels.cs中)因此,您可以修改它以满足您的需要 具体地说,您可以调用
name.Split('.')
,然后循环经过拆分的名称并获取属性值。看起来像
object GetValue(object obj, string properties) {
foreach(strong prop in properties)
obj = TypeDescriptor.GetProperties(obj)
.Find(prop, ignoreCase: true)
.GetValue(obj);
}
return obj;
}
不知道怎么做。你能提供更多的信息吗。thanks@Shane:给你。(未经测试)
object GetValue(object obj, string properties) {
foreach(strong prop in properties)
obj = TypeDescriptor.GetProperties(obj)
.Find(prop, ignoreCase: true)
.GetValue(obj);
}
return obj;
}