C# mvc只读日期时间更新为01/01/0001

C# mvc只读日期时间更新为01/01/0001,c#,asp.net-mvc,datetime,C#,Asp.net Mvc,Datetime,我正在创建一个MVC5.2,似乎无法将DateTime字段设置为只读,并且在编辑后无法更新。我插入一行,日期设置为当前日期时间。然后,当我在MVC视图中编辑该行时,datetime变为1/1/0001 12:00:00 AM。当我编辑行时,我需要做什么才能使datetime显示但不更新 [Table("Employee")] public partial class Employee { [Key] public int TestID { get; set; }

我正在创建一个MVC5.2,似乎无法将DateTime字段设置为只读,并且在编辑后无法更新。我插入一行,日期设置为当前日期时间。然后,当我在MVC视图中编辑该行时,datetime变为1/1/0001 12:00:00 AM。当我编辑行时,我需要做什么才能使datetime显示但不更新

    [Table("Employee")]
public partial class Employee
{
    [Key]
    public int TestID { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }

    [ReadOnly(true)]
    [Column(TypeName = "datetime2")]
    public DateTime LastUpdated { get; set; }
}

CREATE TABLE [dbo].[Employee] (
[TestID]      INT           IDENTITY (1, 1) NOT NULL,
[Name]        NVARCHAR (50) NOT NULL,
[LastUpdated] DATETIME2 (7) DEFAULT (getdate()) NOT NULL,
PRIMARY KEY CLUSTERED ([TestID] ASC));

即使您不打算更改数据库中的值,如果希望该值在POST请求中保持不变,则需要将其绑定到输入:

@Html.HiddenFor(m => m.LastUpdated)
希望您没有在视图中使用EF对象,但即使这样,您也可以控制更新的内容:

var emp = context.Employess.SingleOrDefault(e => e.TestID == model.TestID);
if(emp != null)
{
    emp.Name = model.Name;
    context.SaveChanges();
}
当然,假设
context
是EF DbContext的一个实例,
model
是参数的名称:

public ActionResult Edit(Employee model)
{
    /* ... */
}