簡體   English   中英

在提交時驗證數據注釋模型中的多個字段(Datetime和Bool)

[英]Validating Multiple Fields (Datetime and Bool) in Data Annotation Model on Submit

目前,我正在MVC 3環境上工作,我需要添加一個驗證來驗證Dataannotation模型中的2個字段,就像在提交時觸發的[Required(ErrorMessage="Required!")]驗證一樣。

目前,Validation [Required]正在工作,但我需要檢查booldateTime數據類型

這是我模型中的代碼

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已經有效,否則它不會生效

DataAnnotationsIValidatableObject不會一起驗證。 我的意思是,僅當您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM