【发布时间】:2012-07-14 08:37:40
【问题描述】:
我正在尝试按日期进行搜索过滤,但出现错误。 这是我的搜索方法:
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>}`
我收到以下错误:
参数字典包含“MvcApplication4”中方法“System.Web.Mvc.ActionResult Search(System.DateTime, System.DateTime)”的不可为空类型“System.DateTime”的参数“StartDate”的空条目。控制器.RoomController'。可选参数必须是引用类型、可空类型或声明为可选参数。 参数名称:parameters`
【问题讨论】:
-
你是如何发布到服务器的?使用提交按钮还是使用 ajax?你应该使用
TextBoxFor。不确定它会帮助你。 -
看起来您在另一个视图中提供了指向该操作的链接,而没有传递这两个日期参数。检查您的使用情况。
-
您使用的日期格式不是美国格式,MM/dd/yyyy?
-
不,我使用的是美国格式