我的 MVC2 应用程序今天让我很伤心......我想使用以下控制器代码编辑数据库记录:
[AcceptVerbs(HttpVerbs.Post), Authorize(Roles = "Admin")]
public virtual ActionResult Edit(int id, FormCollection formValues)
{
var masterDataProxy = MasterDataChannelFactory.OpenChannel();
var tester = masterDataProxy.GetTester(id);
masterDataProxy.CloseChannel();
if (null == tester)
{
return View(Views.NotFound);
}
try
{
UpdateModel(tester);
var adminProxy = AdminChannelFactory.OpenChannel();
adminProxy.AddUpdateTester(tester);
adminProxy.CloseChannel();
return RedirectToAction(Actions.Index());
}
catch (Exception ex)
{
ModelState.AddModelError("Tester", ex.Message);
return View(tester);
}
}
我收到高级异常“无法更新‘Model.Entity’类型的模型”,当我深入了解 ModelState 时,我发现它在尝试更新 Id 字段时失败 - “设置 Id属性仅在实体反序列化期间受 .NET 3.5+ 支持”。
问题是,我如何告诉 UpdateModel() 不要更新 Id 字段?我不希望它更新该字段!
有任何想法吗?戴夫