我的数据库中有以下registerdate表。

public Nullable<System.DateTime> registerdate { get; set; }

由于我的模型是自动生成的,它说“手动更改此文件可能会导致您的应用程序出现意外行为”我不想触摸它。

所以这是我的控制器:

        public ActionResult Index(string searchBy, string search, DateTime? search2)
    {
        if (searchBy == "ID")
        {
            return View(db.students.Where(x => x.studentid == search).ToList());
        }
        else if (searchBy == "grade")
        {
            return View(db.students.Where(x => x.grades == search).ToList());
        }
        else if (searchBy == "registerdate")
        {
            return View(db.students.Where(x => x.registerdate == search2).ToList());
        }
        else
        {
            return View(db.students.Where(x => x.studentname.Contains(search)).ToList());
        }
    }

我在我的视图中使用以下代码:

        <p>
        @using (Html.BeginForm("Index", "Home", FormMethod.Get))
        {
            <b>Search by:</b> @Html.RadioButton("searchby", "ID", true) <text>StudentID</text>
            @Html.RadioButton("searchby", "grade") <text>Grade</text>
            @Html.RadioButton("searchby", "registerdate") <text>RegisterDate</text>
            <br /><br />
            @Html.TextBox("search") <input type="submit" value="Search" />
        }
        </p>

并显示:

        @Html.DisplayFor(modelItem => item.registerdate)

所以基本上我可以通过id,grade或studentname进行搜索。 但它对registerdate不起作用。 当我通过registerdate搜索时,它没有带来任何结果。

如果我通过registerdate搜索,我知道为什么我没有得到任何结果?

===============>>#1 票数:2

啊, DateTime比较问题。 我假设在创建/注册学生时,你将RegiseterDate设置为DateTime.Now

student.RegisterDate = DateTime.Now();

因此,注册日期存储为4/20/2014 09:38:274/20/2014 09:38:27 现在,当您从Web界面发送日期时(使用日期选择器或类似的东西),您的search2变量将设置为4/20/2014 00:00:00 您可以清楚地看到,4月20日的第一个DateTime不等于4月20日的第二个DateTime。

通常,您可以使用student.RegisterDate.Date == search2比较您只关心日期部分的DateTime变量,但EF无法将.Date()转换为SQL。 因此,最简单的方法是使用以下内容比较当天的整个范围:

    //search2 == 4/20/2014 00:00:00
    var endDate = search2.Value.AddDays(1);
    //endDate == 4/21/2014 00:00:00
    return View(db.students.Where(x => x.registerdate >= search2 
&& x.registerdate < endDate).ToList());
    //return all students where registerdate is between 4/20/2014 00:00:00 and 4/21/2014 00:00:00.

  ask by sensahin translate from so

未解决问题?本站智能推荐:

1回复

用于以HH:mm格式显示时间的MVC 4编辑器模板

使用MVC 4和我创建了一个编辑器模板,仅显示来自DateTime对象的HH:mm格式的时间 编辑器模板代码(TimePicker.cshtml) 在视图中 但最终HTML呈现的是 即便如此,我也尝试对调试值进行硬编码,如下所示 我仍然得到相同的2013-0
3回复

日期转换(c#,Asp.net MVC)

我正在尝试在asp.net mvc Web应用程序上转换DateTime的格式。 我有这个代码: 当Request [“ date”]仅一天中的一位数字时,该代码将非常有效 (例如2016年8月3日),但是当日期有两位数字时(例如15-03-2016), 它返回01-01
1回复

系统参数异常mvc .net

我在查询字符串中传递参数。 当我在浏览器中悬停链接时,它可以正确显示查询字符串中的键值对。 当我单击链接时,首先,不会在特定操作上触发断点,其次,我得到了以下异常: 参数字典包含方法'System.Web.Mvc.ActionResult GetAllExpenses(System
1回复

如何在ASP.NET MVC控制器参数中将毫秒转换为DateTime

甘特图将时间(以毫秒为单位)传递给MVC4控制器。 下面的代码打印出1440190800000 MVC4控制器具有签名: 调用此控制器会导致错误 如何在控制器代码或javascript中解决此问题以获得DateTime值?
3回复

无法使用数据注释在MVC 4中设置日期时间格式

我会尝试一切但不工作这个( dd / MM / yyyy )日期格式,这总是门mm / dd / yyyy 剃刀视图 使用DateTime模板。
1回复

在MVC中显示日期时间会导致“模板只能与字段访问错误一起使用”

我在项目中有一个由EF6创建的内容实体模型 。 如您所见,我有一列DateOfPublish ,类型为Datetime 。 我想使用此功能将日期DateOfPublish转换为波斯日期: 所以我在View( content view )中调用了这个函数,所以我试图用这个函数
1回复

AJAX调用中发送的日期时间值未在MVC控制器中反序列化

我正在以javascript对象的形式发送以下格式'22 / 03/17'的日期时间字符串。 但是在MVC控制器中,此值未序列化,并且给出了空值。 在C#类中,属性的定义如下。 公开DateTime? SubscriptionExpiryDate {get; 组; } 我做
1回复

如何知道以月为单位的确定日期-ASP MVC 4

我正在使用MVC 4在ASP中工作,我尝试知道每月的星期数。 例如,用户插入05/02/2014 ,控制器中的i需要知道从该日期开始的星期数。 例如:用户插入04/02/2014 ,我得到结果6 编辑:使用格式dd / mm / yyyy
2回复

在MVC4视图中转换日期时间会导致错误

我在项目中有一个由EF6创建的内容实体模型 。 如您所见,我有一列DateOfPublish ,类型为Datetime 。 我想使用此功能将日期DateOfPublish转换为波斯日期: 所以我在View( content view )中调用了这个函数,所以我试图用这个函数
1回复

如何在ASPX / MVC4页面中转换日期时间?

我有一个使用ASPX的MVC4应用程序。 在控制器中,我使用LINQ。 我读取了一个字符串,然后将该值转换为日期时间值。 一切看起来还好。 日期时间符号为:“ dd-MM-yyyy”。 但是,当我看到我的网页时,我看到的日期值如30-07-2001为01-01-0001。 为什么