我有一个简单的课程,我从网络服务中获得。
public class person
{
public string name { get; set; }
public int number { get; set; }
}
我的代码中的第二课
public class people
{
[ValidatePerson]
public List<person> myPeople;
}
和自定义ValidationAttribute
[AttributeUsage(AttributeTargets.Property,AllowMultiple = false)]
public class ValidatePerson : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
ValidationResult returnValue = ValidationResult.Success;
return returnValue; // do stuff later
}
}
因为人来自网络服务我不能添加装饰器(我知道)并且将装饰器添加到人的属性意味着“值”是List<person>
而不是人。
我想验证不是List<person>
的人的原因是因为我在人物的editortemplate中使用@Html.ValidationMessageFor(model => model);
,我想要有多条消息,例如“这不是一个有效的人”顶部不是一块说“你有3个无效的人”。
答案 0 :(得分:0)
您必须为您的人重新创建模型,将验证注释添加到该模型中,将值从服务人员深度复制到控制器或服务请求中的本地人员,然后获得模型定义的列表您在视图模型中创建,然后使用帮助程序与视图模型中的列表,使用数据注释保存本地定义的人员,它将获取正确的验证。
答案 1 :(得分:0)
只需为您要验证的人创建一个新模型,即:
public class personValidator
{
[ValidatePerson]
public string name { get; set; }
public int number { get; set; }
}
然后将webservice的结果复制到personValidator类,并在View中使用它。