ビューにフォームタグが表示されません...またはビュー全体が表示されていませんか?わかりにくいですが、コントローラーに投稿するには、ajax呼び出しを介してコントローラーに値を送信するか、モデルを投稿する必要があります。あなたの場合、モデルはでIEnumerable<CormanReservation.Models.Reservation>
あり、入力は日付セレクターであり、ViewModelにバインドされているようには見えません。どの時点で日付をサーバーにポストバックしますか?送信ボタンのあるフォームがありますか、それとも表示されていないajax呼び出しがありますか?
これは、日付を渡すために呼び出すことができるAjaxリクエストの例です。
$(function () {
$(".datepicker").onselect(function{
searchByDate();
})
});
});
function searchbyDate() {
var myDate = document.getElementById("myDatePicker");
$.ajax({
url: "/Home/Search/",
dataType: "json",
cache: false,
type: 'POST',
data: { dateInput: myDate.value },
success: function (result) {
if(result.Success) {
// do something with result.Data which is your list of returned records
}
}
});
}
日付ピッカーコントロールには、それを参照するための何かが必要です
<input id="myDatePicker" name="dateInput" type="text" class="alternate" />
あなたの行動は次のようになります
private CormantReservationEntities db = new CormantReservationEntities();
public JsonResult Search(string dateInput) {
DateTime date = Convert.ToDateTime(dateInput);
var reservations = db.Reservations.Where(r=>r.Date==date).Include(r => r.Employee).Include(r => r.Room).OrderByDescending(r => r.Date);
return View(reservations.ToList());
return Json(new {Success = true, Data = reservations.ToList()}, JsonRequestBehaviour.AllowGet());
}
アップデート
これをデータを投稿してビューを返す標準の投稿にしたい場合は、これと同様の変更を加える必要があります。
ViewModelを作成する
public class ReservationSearchViewModel {
public List<Reservation> Reservations { get; set; }
public DateTime SelectedDate { get; set; }
}
コントローラのアクションを変更して、最初にページをロードしてから、データを投稿して、データを含むビューを返すことができるようにします
public ActionResult Index() {
var model = new ReservationSearchViewModel();
model.reservations = new List<Reservation>();
return View(model);
}
[HttpPost]
public ActionResult Index(ReservationSearchViewModel model) {
if(ModelState.IsValid)
var reservations = db.Reservations.Where(r => r.Date = model.SelectedDate).Include(r => r.Employee).Include(r => r.Room).OrderByDescending(r => r.Date);
}
return View(model)
}
インデックスHttpPostアクションに投稿するフォームがあるようにビューを変更します
@model CormanReservation.Models.ReservationSearchViewModel
<h5>Select a date and see reservations...</h5>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.EditorFor(model => model.SelectedDate)
@Html.EditorFor(model => model.Reservations) // this may need to change to a table or grid to accomodate your data
<input type="submit" value="Search" />
}