Asp.net
ASP.NET MVC 3 數據註釋:動態添加驗證
我是數據註釋的新手。我想知道是否可以(以及如何)動態添加一些驗證。解釋原因非常廣泛,但我有一個 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"); } }