2012-05-04 50 views
0

我想按日期進行搜索過濾,但出現錯誤。 這是我的搜索方法:按日期在mvc中搜索過濾器3

public ActionResult Search(DateTime StartDate,DateTime EndDate) 
    { 
     var result = (
      from r in context.Rooms 
      from v in context.Reservations 
       .Where(a =>a.Room_ID == r.RoomID 
        && 
        !(
         StartDate >= a.Data_Check_out || 
         EndDate <= a.Data_Check_in 
        ) 
        && a.Cancel == false 
       ).DefaultIfEmpty() 
      where v.ReservationID == null 
      select r 
      ); 
     return View(result); 
    } 

這裏是我的看法:

@model IEnumerable<MvcApplication4.Models.Room> 

      @using (Html.BeginForm("Search", "Room", FormMethod.Get)) 
      { 
      @Html.TextBox("StartDate") 
      <input type="submit" value="Search" /> 
     @Html.TextBox("EndDate") 
     <input type="submit" value="Search" /> } 
      @foreach (var x in Model) 
      { 
     <div class="item"> 
     <h1>@x.Room_Type.Room_Type1</h1> 

     </div>}` 

我得到以下錯誤:

The parameters dictionary contains a null entry for parameter 'StartDate' of non-nullable type 'System.DateTime' for method 'System.Web.Mvc.ActionResult Search(System.DateTime, System.DateTime)' in 'MvcApplication4.Controllers.RoomController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters`

+1

你如何發佈到服務器?與提交按鈕或與AJAX?你應該使用'TextBoxFor'。不知道它會幫助你。 – gdoron

+0

它看起來像是在另一個視圖中提供了該操作的鏈接,而不傳遞這兩個日期參數。檢查你的用法。 – mattytommo

+0

您是否使用美國格式以外的日期格式MM/dd/yyyy? – pjumble

回答

1

你正在傳遞參數的網址是什麼?如果不是,那麼最好在控制器中使用模型來獲取值。這個錯誤即將發生,因爲控制器無法獲取參數值。

+0

我怎麼解決它? – jonny

+0

閱讀本文: - http://www.codeproject.com/Articles/207797/Learn-MVC-Model-view-controller-Step-by-Step-in-7其實你需要訪問控制器中的模型,將返回值給你,甚至你可以使用Request.Form [「StartDate」]來訪問你的視圖文本框。ToString() – Deepesh