0

重複の可能性:
MVC3 カスタム検証: 2 つの日付を比較する

開始日が終了日よりも小さい必要があるように、日付の検証を試みています。終了日が開始日より前の場合、例外がスローされます。検索ボタンを押したときに、この例外を画面に表示するにはどうすればよいですか?表示されるメッセージが間違っていますか?

    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 に答える