【问题标题】:search filter by date in mvc 3在 mvc 3 中按日期搜索过滤器
【发布时间】: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?
  • 不,我使用的是美国格式

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

你是在 url 中传递参数吗?如果不是,那么最好在控制器中使用模型来获取价值。出现此错误是因为控制器无法获取参数值。

【讨论】:

  • 阅读这篇文章 :- codeproject.com/Articles/207797/… 实际上,您需要访问控制器中的模型,它将返回值给您,甚至您可以使用 Request.Form["StartDate"].ToString 访问您的视图文本框()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 2018-06-29
  • 2015-10-20
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多