MVC2 在 UpdateModel() 中抛出 InvalidOperationException,试图更新 id 字
本文关键字:更新 id InvalidOperationException UpdateModel MVC2 | 更新日期: 2023-09-27 17:55:47
我的 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 字段时失败——"在实体反序列化期间,.NET 3.5+ 仅支持 Id 属性"。
问题是,我怎么能告诉 UpdateModel() 不更新 Id 字段? 我不希望它更新该字段!!
有什么想法吗?戴夫
尝试
UpdateModel(tester, formValues.ToValueProvider());
并确保Id
不包含在表单值中。
使用 TryUpdateModel(tester)
而不是 UpdateModel(tester)