我正在创建一个MVC 5.2,并且似乎无法将DateTime字段设置为只读,并且在编辑后不会更新。我插入一行,日期设置为当前日期时间。然后,当我在MVC视图中编辑行时,日期时间变为1/1/0001 12:00:00 AM。在编辑行时,我需要做什么才能显示日期时间而不是更新?
[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));
答案 0 :(得分:1)
即使您不打算更改数据库中的值,如果您希望该值在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)
{
/* ... */
}