MVC开始日期和结束日期验证

ful*_*dau -1 validation asp.net-mvc

我很难使它起作用。我要允许用户选择start date和end date,如果start date大于end date我希望显示错误消息。我正在使用MVC。这是我模型上的代码。

 public class ModelClass : IValidatableObject
{
    [Required(ErrorMessage = "ID Number is required")]
    [Display(Name = "ID Number:")]
    [RegularExpression(@"^(\d{13})$", ErrorMessage = "Enter a 13 digit ID number")]
    public Int64 ID_Number { get; set; }
     [Required(ErrorMessage = "The start date is required")]
    [Display(Name = "Start Date:")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}")]
    public DateTime Start_Date { get; set; }
    [Required(ErrorMessage = "The end date is required")]
    [Display(Name = "End Date:")]
    [GreaterThan("Start_Date")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}")]
    public DateTime End_Date { get; set; }





    IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
    {
        if (End_Date < Start_Date)
        {
            yield return new ValidationResult("EndDate must be greater than StartDate");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Off*_*'er 6

这是模型的外观:

 public class ModelClass : IValidatableObject
{
    [Required(ErrorMessage = "ID Number is required")]
    [Display(Name = "ID Number:")]
    [RegularExpression(@"^(\d{13})$", ErrorMessage = "Enter a 13 digit ID number")]
    public Int64 ID_Number { get; set; }
    [Required(ErrorMessage = "The start date is required")]
    [Display(Name = "Start Date:")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}")]
    public DateTime Start_Date { get; set; }
    [Required(ErrorMessage = "The end date is required")]
    [Display(Name = "End Date:")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}")]
    public DateTime End_Date { get; set; }


    IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
    {
        if (End_Date < Start_Date)
        {
            yield return new ValidationResult("EndDate must be greater than StartDate");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用户按下“提交”按钮后,我们需要检查模型是否有效。

ModelState.IsValid

将转到您的模型并验证模型。如果后模型有效(保留您在模型中确定的规则),则该模型有效。

这是您的操作应如下所示:

[HttpPost]
public ActionResult Create(ModelClass modelClass)
{
    if (ModelState.IsValid)
    {
        db.modelClass.Add(modelClass);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(modelClass);
}
Run Code Online (Sandbox Code Playgroud)