将datetime2数据类型转换为日期时间数据类型会导致编辑

时间:2015-12-03 12:17:59

标签: c# asp.net datetime asp.net-mvc-5

我的模型中有这个字段:

public DateTime ATime{ get; set; }

在创建控制器上,我可以使用datepicker选择日期并成功创建。

但是当我尝试编辑对象时,我在标题中得到了异常。我的编辑代码是默认编辑代码:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include="AID,ATime")] Project project)
{
            if (ModelState.IsValid)
            {
                db.Entry(project).State = EntityState.Modified;
                db.SaveChanges(); // I get exception at this line.
                return RedirectToAction("Index");
            }
            return View(project);
}

如何摆脱这种异常?感谢。

3 个答案:

答案 0 :(得分:0)

Datetime2的范围大于datetime。你确定你试图将它设置为适合日期时间范围的新值吗?

(另外,datetime是一种不符合ANSI标准的遗留类型。无论如何,我都会将数据库中的基础类型更改为datetime2。http://blogs.msdn.com/b/cdnsoldevs/archive/2011/06/22/why-you-should-never-use-datetime-again.aspx

答案 1 :(得分:0)

更改您的模态代码如下: -

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime ATime{ get; set; }

日期也应该在以下范围内: 最短日期是:1753年1月1日 最长日期是:9999年12月31日

答案 2 :(得分:0)

我假设您没有特别使用datetime2类型。因此,您可以使用数据注释将日期时间类型分配给模型属性,如下所示。

[DataType(DataType.DateTime)]
public DateTime ATime { get; set; }