许多复杂的ModelError添加

问题描述

.core mvc编程中,我有点新意。

我有很多日期验证。

例如:

private void Validations()
{
    if (startDate >= endDate)
    {
       ModelState.AddModelError("","ErrorMessage");
       return;
    }

    if (startDate < DateTime.Today)
    {
       ModelState.AddModelError("","ErrorMessage");
       return;
    }

    if (startDate < dateInTheFuture)
    {
       ModelState.AddModelError("","ErrorMessage");
       return;
    }

    var substracted = startDate.Subtract(endDate);

    if (substracted.Days < MinDays)
    {
       ModelState.AddModelError("","ErrorMessage");
       return;
    }
    
    // and so on
}

有什么方法可以使它更清洁或更完善?

解决方法

您可以:

  1. 使用validation attributes可以减少手动验证的次数
  2. 为复杂的字段验证逻辑创建your own validation attribute
  3. 实施IValidatableObject on your model并将验证代码移入模型类