[英]Validating Multiple Fields (Datetime and Bool) in Data Annotation Model on Submit
目前,我正在MVC 3環境上工作,我需要添加一個驗證來驗證Dataannotation模型中的2個字段,就像在提交時觸發的[Required(ErrorMessage="Required!")]
驗證一樣。
目前,Validation [Required]
正在工作,但我需要檢查bool
和dateTime
數據類型
這是我模型中的代碼
public class NameInfo: IValidatableObject
{
[Display(Name = "Name")]
[Required(ErrorMessage = "Required!")]
public string Name{ get; set; }
[Display(Name = "Start Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public Nullable<DateTime> StartDate { get; set; }
[Display(Name = "Already Starting")]
public bool IsStarting{ get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!IsStarting&& !StartDate.HasValue)
{
yield return new ValidationResult("Required.", new[] { "StartDate" });
}
}
}
當前我正在使用IValidatableObject
但是除非name
Field modelstate已經有效,否則它不會生效
提前致謝!
當前我正在使用IValidatableObject,但是除非名稱Field modelstate已經有效,否則它不會生效
DataAnnotations
和IValidatableObject
不會一起驗證。 我的意思是,僅當您的DataAnnotations
有效時,才會調用IValidatableObject
的validate方法。
編寫您自己的ValdiationAttribute
或將所需的驗證添加到IValidatableObject
。
這是后者的一個例子...
public class NameInfo : IValidatableObject
{
[Display(Name = "Name")]
public string Name { get; set; }
[Display(Name = "Start Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public Nullable<DateTime> StartDate { get; set; }
[Display(Name = "Already Starting")]
public bool IsStarting { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (string.IsNullOrEmpty(Name))
{
yield return new ValidationResult("Name is required!");
}
if (!IsStarting && !StartDate.HasValue)
{
yield return new ValidationResult("Required.", new[] { "StartDate" });
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.