【发布时间】:2016-12-26 17:04:05
【问题描述】:
我的模型有一个 TimeStamp 列,该列在创建记录时自动生成。我正在使用带有 Razor 语法的默认 CRUD 脚手架。此时我才刚刚开始使用该项目,因此它是使用实体框架从 Visual Studio 生成的基本控制器和视图。
列在数据库中是这样设置的:
TimeStamp DATETIME NOT NULL CONSTRAINT [DF_Chains_TS] DEFAULT (GETDATE())
这是生成的模型:
public partial class Chain
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public int ChainId { get; set; }
public string Name { get; set; }
public System.DateTime TimeStamp { get; set; }
}
这是控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ChainId,Name")] Chain chain)
{
if (ModelState.IsValid)
{
db.Chains.Add(chain);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(chain);
}
我正在视图中尝试这个:
<div class="form-group">
@*Html.LabelFor(model => model.TimeStamp, htmlAttributes: new { @class = "control-label col-md-2" })*@
<div class="col-md-10">
@Html.HiddenFor(model => model.TimeStamp, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.TimeStamp, "", new { @class = "text-danger" })
</div>
</div>
当尝试在创建视图中创建新记录时,我要么得到该字段是必需的,要么将 null 写入 TimeStamp 字段。我认为我的问题是我不确定如何处理控制器或视图中的自动生成字段。任何人都可以帮助如何编写包含此类字段的记录,或者我是否需要添加任何特定的数据注释?
【问题讨论】:
-
告诉我们你现在在做什么?请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。
-
检查你的变量
chainTimeStamp 有什么值?
标签: sql vb.net entity-framework model-view-controller