0

可能重复:
MVC3 自定义验证:比较两个日期

我正在尝试对我的日期进行验证,以便开始日期必须小于结束日期。如果结束日期早于开始日期,则抛出异常。如何在我的屏幕上显示此异常,以便当我按下搜索按钮和日期错误会出现消息吗?

    public ActionResult SearchFree(DateTime? StartDate, DateTime? EndDate)
    {

        if (StartDate.HasValue && EndDate.HasValue)
        {
        DateTime d1 = StartDate.Value;
        DateTime d2 = EndDate.Value;
        TimeSpan span = d2 - d1;


        if (span.Days <= 0)
        {
            throw new ArgumentOutOfRangeException("start date must be before end date");
        }

        try
        {
            DBContext.Current.Open();
            var model = Reservation.SelectFreeRooms(StartDate, EndDate);
            DBContext.Current.Close();
            return View(model);
        }
        catch (ArgumentException ae)
        {
            throw ae;
        }


              }
      return View(new List<dynamic>());
    }

在此处输入图像描述

4

1 回答 1

4
public ActionResult SearchFree(DateTime? StartDate, DateTime? EndDate)
{

    if (!StartDate.HasValue || !EndDate.HasValue)
    {
        ModelState.AddModelError("Date", "Dates are empty");
        return View();
    }

    if(StartDate.Value > EndDate.HasValue
    {
        ModelState.AddModelError("Date", "start date must be before end date");
        return View();
    }

    try
    {
        DBContext.Current.Open();
        var model = Reservation.SelectFreeRooms(StartDate, EndDate);
        DBContext.Current.Close();
        return View(model);
    }
    catch ()
    {
        ModelState.AddModelError("", "Db problem");
        return View();
    }
}

但最好的方法 - 使用一些模型并使用属性验证它

于 2012-06-21T20:19:10.513 回答