2012-05-04 9 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

2つの日付パラメータを渡すことなく、別のビューでそのアクションへのリンクを提供しているようです。あなたの使用法をチェックしてください。 – mattytommo

+0

アメリカの書式MM/dd/yyyy以外の日付書式を使用していますか? – pjumble

答えて

1

は、URLにパラメータを渡していますか?そうでない場合は、コントローラでモデルを使用して値を取得する方がよいでしょう。このエラーは、コントローラがパラメータ値を取得できないために発生します。

+0

どうすれば解決できますか? – jonny

+0

この記事の内容: - http://www.codeproject.com/Articles/207797/Learn-MVC-Model-view-controller-Step-by-Step-in-7実際にコントローラのモデルにアクセスする必要があります。あなたに値を返したり、Request.Form ["StartDate"]を使ってビューのテキストボックスにアクセスすることもできます。ToString() – Deepesh