我是新的数据注释.我想知道是否可能(以及如何)动态添加一些验证.解释为什么是非常广泛的,但是我有一个viewmodel在创建时接收和对象.在该对象中,我必须检查一些属性,并根据其值应该有或没有一些验证.
一个例子:
public class Profileviewmodel { [required(ErrorMessage = "The field {0} is required")] [Display(Name = "Client Code")] public int ClientCode { get; set; } [required(ErrorMessage = "The field {0} is required")] [StringLength(100,ErrorMessage = "The field {0} must have up to 100 characters.")] [Display(Name = "Company")] public string Company { get; set; } [StringLength(50,ErrorMessage = "The field {0} must have up to 50 characters.")] [Display(Name = "Name")] public string Name { get; set; } [StringLength(50,ErrorMessage = "The field {0} must have up to 50 characters.")] [Display(Name = "LastName")] public string LastName { get; set; } public Profileviewmodel(User usr) { if (usuario.ClientCode != null) { ClientCode = Convert.ToInt32(usr.ClientCode); } else { //ClientCode and Company are not yet required. //Name and LastName are now required. } Company = usr.Company; Name = usr.Name; LastName = usr.LastName; } }
解决方法
我认为最简单的做法就是实现
IValidatableObject
:
public class Product : IValidatableObject { public int Prop1 { get; set; } public int Prop2 { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (Prop1 < Prop2) yield return new ValidationResult("Property 1 can't be less than Property 2"); } }