我有一个带有 GUID 主键的表,我正在尝试使用 ASP.NET MVC 控制器的UpdateModel
方法(db 是 LINQ-to-SQL 数据上下文)插入一个新创建的对象:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
Fields field = new Fields();
field.ID = Guid.NewGuid();
try
{
UpdateModel(field);
db.Fields.InsertOnSubmit(field);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View("Edit", field);
}
}
首先,模型上自动生成的 Edit 和 Create 视图包含一个供用户编辑的主键字段似乎很奇怪,但删除它们很容易。
但是我遇到了一个问题,UpdateModel
当主键没有作为表单集合的一部分传入时,调用会引发异常。
我是否错过了将主键列标记为用户(以及对 的调用UpdateModel
)不应该使用的东西的某种方式?我可以添加一个includeProperties
数组并保留主键的名称,但这不是很干)。
我还可以在包含主键的表单中添加一个隐藏字段——使用 GUID 主键,我可以在创建的 GET 请求中执行此操作。