我在您的视图中没有看到表单标签...或者您没有显示整个视图?很难说..但要发布到您的控制器,您应该通过 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());
}
更新
如果您想让它成为发布数据并返回视图的标准帖子,那么您需要进行与此类似的更改。
创建一个视图模型
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)
}
修改您的视图,以便您有一个表单可以发布到 Index 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" />
}