Это не строго связано с MVC, я думаю, что это более общий вопрос о том, как правильно разработать код для управляемых непредвиденных ситуаций (или ожидаемых ошибок, генерируемых пользовательским вводом) и дать соответствующую обратную связь.
Для неожиданныхповедения мы говорим об обработке исключений.Вы помещаете свой код в блок try / catch и обрабатываете исключение в catch.
Для ошибок, которые могут быть сгенерированы пользовательским вводом, мы говорим о проверке.Это означает, что вы проверяете свой объект на соответствие набору правил, и если одно или несколько не проходит, вы возвращаете набор ошибок в ваше представление и отображаете его для пользователя.
Теперь для некоторых MVC, касающихся того, каксделать это.Давайте рассмотрим пример кода:
[HttpPost]
[ModelStateToTempData]
public ActionResult SaveMyObject(MyObject myObject)
{
try
{
if (ModelState.IsValid)
{
MyRepository.Save(myObject);
return RedirectToAction("Success");
}
return RedirectToAction("MyForm");
}
catch (Exception ex)
{
//handle/log your exception as you see fit
ModelState.AddModelError("Name", "Message");
return RedirectToAction("MyForm");
}
}
. В этом примере мы предполагаем несколько вещей:
- Мы следуем шаблону PRG (вы можете зайти в Google) и реализуем его с помощью атрибута ModelStateToTempData из MvcContrib;
- Мы используем метод проверки, который активируется при привязке модели (например, аннотации данных)
Это пример метода, который получитсообщение вашей формы.Данные поступают из связующего устройства, которое уже подтверждено.Если данные действительны, вы сохраняете их и перенаправляете пользователя на страницу успеха.Если данные недействительны, вы перенаправляете его обратно на метод действия, который отображает форму.Осторожно: не визуализируйте вид непосредственно отсюда: полное объяснение этого см. В шаблоне PRG.
Все это в блоке try / catch, поэтому, если что-то не получается, вы можете перехватить / обработатьсообщение об ошибке, а затем добавьте пользовательское сообщение об ошибке на страницу, затем перенаправьте пользователя на метод действия, который отображает форму, и отобразите для него ошибку.