2016-04-14 23 views
0

誰かが私がMVCに非常に慣れていて、MVAでいくつかのビデオをフォローした後、私は自分の新しいビューとコントローラを既存のモデルに基づいて作成しようとしているのだろうかと思っていました。ビューに検索結果を表示しようとしているようです。コントローラとビューのMVC datetimeパラメータ

public ActionResult Availability(DateTime? StartDate) 
    { 
     ViewBag.StartDate = DateTime.Now.AddDays(2); 

     var GetBookings = from m in db.Bookings 
          where m.Arrival_Date.Date <= (StartDate) 
          select m; 

     if (!StartDate.HasValue) 
     { 
      GetBookings = db.Bookings.Where(x => x.Arrival_Date <= StartDate); 
     } 

     return View(GetBookings); 

    } 

そして最後にコメントを追加しました:

[Key] 
    public int BookingID { get; set; } 
    public int RoomID { get; set; } 
    public DateTime Arrival_Date { get; set; } 
    public DateTime Departure_Date { get; set; } 

私は、コントローラ内の新しいアクションの結果を追加しました:

は、だから私のモデルがある(私は後の段階でLINQクエリを調整します)入力付きのモデルを指す可用性という名前のビュー:

@model IEnumerable<SuiteUI.Models.Booking> 

@using(Html.BeginForm()) {

<input type="datetime" value="@(ViewBag.StartDate)" /> 
    <input type="submit" value="Filter" class="btn btn-default" /> 
</p> 

}

<p> 
@Html.ActionLink("Create New", "Create") 

<table class="table"> 
<tr> 
    <th> 
     @Html.DisplayNameFor(model => model.RoomID) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Arrival_Date) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Departure_Date) 
    </th> 
    <th></th> 
</tr> 

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.RoomID) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Arrival_Date) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Departure_Date) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id=item.BookingID }) | 
     @Html.ActionLink("Details", "Details", new { id=item.BookingID }) | 
     @Html.ActionLink("Delete", "Delete", new { id=item.BookingID }) 
    </td> 
</tr> 

}

うまくいけば、これは、これまでそれほど悪くはありませんが、私はPOSTをしないのです考えます変位を処理するアクション結果を期待していますが、これは私が立ち往生しているところです。どんなアイデアやアドバイスもいただければ幸いです!

答えて

0

ソート、このパラメータを使用してPOSTのActionResultをGETリクエストからパラメータを削除し、追加することによって、今取り組んでいる

[HttpGet] 
    public ActionResult Availability() 
    { 
     ViewBag.StartDate = DateTime.Now; 
     return View(db.Bookings.ToList()); 

    } 

[HttpPost] 
    public ActionResult Availability(DateTime? StartDate) 
    { 

     var GetBookings = from m in db.Bookings 
          where DbFunctions.TruncateTime(m.Arrival_Date) <= (StartDate) 
          select m; 

     if (!StartDate.HasValue) 
     { 
      GetBookings = db.Bookings.Where(x => DbFunctions.TruncateTime(x.Arrival_Date) <= StartDate); 
     } 

     return View(GetBookings); 

    } 
関連する問題