MVC - 如何解决“SqlException:将datetime2数据类型转换为日期时间数据类型导致超出范围的值。”

时间:2017-07-10 13:10:07

标签: c# asp.net-mvc datetime

我有一个具有DateTime属性的模型,该属性存储创建对象的日期。

public class UserProfile
{
    public int Id { get; set; }

    public string Name { get; set; }

    [Required]
    [DataType(DataType.Date)]
    public DateTime DateCreated { get; set; }
}

创建用户配置文件时,将在create方法中设置DateCreated,如下所示:

profile.DateCreated = DateTime.Now.Date;

但是在我的编辑方法中,我不希望更改此DateCreated值,因此我将其从Include属性中删除。

即便如此,即使我不想更新该字段,也会将Date 01值01/01/0001传递给模型。这是导致SqlException的原因,但我不知道如何阻止它。

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "Id,Name")] UserProfile profile)
    {
        if (ModelState.IsValid)
        {
            db.Entry(profile).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(profile);
    }

我尝试删除[必需]属性但仍未解决。

我通过添加?使DateCreated成为可空的?在DateTime前面

public DateTime? DateCreated { get; set; }

但是当我编辑UserProfile时,这导致DateCreated变为null。

0 个答案:

没有答案