Asp.net

ASP.NET MVC 3 數據註釋:動態添加驗證

  • May 24, 2011

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

另請參閱:使用 … ASP.NET MVC 3 進行類級模型驗證

引用自:https://stackoverflow.com/questions/6109277