Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core
При использовании параметра в методе действия привязка модели работает неявно. Но мы можем вызвать на контроллере и явную привязку модели
с помощью методов UpdateModel и TryUpdateModel.
Если модель не прошла валидацию, то метод UpdateModel
выбрасывает исключение. Ниже показан пример использования метода
UpdateModel
в действии Edit
вместо применения параметра:
[HttpPost] public ActionResult Edit() { var book = new Book(); try { UpdateModel(book); db.Entry(book).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } catch { ViewBag.Message="Во время редактирования возникли ошибки"; return RedirectToAction("Index"); } }
TryUpdateModel
также вызывает привязку модели, но не выбрасывает исключение. Этот метод возвращает значение типа bool
-
если это значение равно true
, модель прошла привязку, если false
, то валидация прошла неудачно.
[HttpPost] public ActionResult Edit() { var book = new Book(); if (TryUpdateModel(book)) { db.Entry(book).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } else { ViewBag.Message="Во время редактирования возникли ошибки"; return RedirectToAction("Index"); } }