MVC2 генерирует InvalidOperationException в UpdateModel(), пытаясь обновить поле id
Мое приложение 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? Я не хочу обновлять это поле!
Есть идеи? Дейв
2 ответа
Решение
Пытаться
UpdateModel(tester, formValues.ToValueProvider());
и убедитесь, Id
не входит в форму значения.
Использование TryUpdateModel(tester)
поставленный UpdateModel(tester)