日期搜索转换问题

时间:2013-10-08 12:27:00

标签: c# .net asp.net-mvc-4

我正在尝试在脚手架索引视图上运行一个非常简单的搜索。通常这适用于我,但使用日期我无法让它工作。

我的控制器中的代码是:

public ActionResult Index(DateTime SearchDate)
{
    var query = from a in db.AppointmentProcedures
                where a.BookingStatus == false
                orderby a.AppointmentStartTime
                select a;

    if (SearchDate != null)
    {

         query = from a in db.AppointmentProcedures
                    orderby a.AppointmentDate
                    where a.AppointmentDate == SearchDate
                    select a;
    }

    return View(query);
}

但是我遇到了转换问题。在视图中我只有一个简单的日期时间选择器。

4 个答案:

答案 0 :(得分:1)

您的AppointmentDate类型是否为日期?

如果是,则无需将SearchDate转换为string

答案 1 :(得分:1)

如果可以null。或者换句话说,用户没有指定值控件允许null。那么你希望你的参数看起来像这样:

DateTime? SearchDate

这将允许您这样做:

if (SearchDate.HasValue)

并进一步将您的查询更改为:

query = from a in db.AppointmentProcedures
        orderby a.AppointmentDate
        where a.AppointmentDate == SearchDate.Value
        select a;

如果不能null。然后是,请检查MinValue

if (SearchDate != DateTime.MinValue)

答案 2 :(得分:1)

DateTime是一个结构,不能为null。如果MVC无法绑定它,它将使用等于default(DateTime)的{​​{1}}。

DateTime.MinValue是0001年1月1日,但是Sql DateTime的最小值是1753年1月1日。如果您尝试在查询中使用DateTime.MinValue,则会出错。

要解决此问题,您可以使用Nullable DateTime。代码中的更改如下所示:

DateTime.MinValue

答案 3 :(得分:0)

  1. 将日期作为字符串存储在数据库

  2. 中是很奇怪的
  3. 之前进行转化:

  4. var converted = Convert.ToString(SearchDate);
    query = from a in db.AppointmentProcedures
    orderby a.AppointmentDate
    where a.AppointmentDate == converted
    select a;

    因为它无法识别Convert.ToString()函数(将尝试将其解释为SQL函数)。