Я пытаюсь обновить модель, исключив некоторые свойства с указанным ниже кодом на моем контроллере. Действие:
[HttpPost, ValidateAntiForgeryToken, ActionName("Edit")]
public ActionResult Edit_post(Board board, int id) {
var model = _boardrepository.GetSingle(id);
#region _check if exists
if (model == null)
return HttpNotFound();
#endregion
if (TryUpdateModel<Board>(model, "", null, new string[] { "BoardID", "BoardGUID", "BoardAbbr" })) {
try {
_boardrepository.Edit(model);
_boardrepository.Save();
return RedirectToAction("details", new { id = id });
} catch (Exception ex) {
#region Log the error
ex.RaiseElmahNotification("Error while trying to update a destination.");
#endregion
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, inform your system administrator.");
}
}
return View(board);
}
Когда я пытаюсь обновить мою модель, она перенаправляет меня в окно редактирования и выдает ошибкусообщение о том, что поле BoardAbbr
является обязательным, что вполне законно, если мне нужно обновить поле BoardAbbr
.Но, как вы можете видеть, я исключаю некоторые поля с кодом ниже, и BoardAbbr
является одним из них:
if (TryUpdateModel<Board>(model, "", null, new string[] { "BoardID", "BoardGUID", "BoardAbbr" }))
Затем я помещаю код ниже перед методом TryUpdateModel
, он работает как шарм:
ModelState.Remove("BoardAbbr");
Что меня здесь беспокоит, так это то, что либо я делаю что-то не так, либо что-то не так было встроено в фреймворк.Могу поспорить, что первая проблема здесь.
почему не исключает свойства модели при обновлении с TryUpdateModel
без ModelState.Remove
?
Если честно, я не так много в этом разбиралсяи прямо сюда, чтобы кричать вам этот вопрос, ребята.