Когда я выполняю Ajax.BeginForm, публикуя сообщения о своих действиях, возвращая частичное представление, я отправляю информацию об ошибке в элементе ViewData.
В настоящее время для обработки всех ошибок я должен обернуть все методы в try catchзаявление.
[HttpPost, ValidateAntiForgeryToken]
public virtual ActionResult Save(int id, FormCollection form)
{
MyModel model;
try
{
...do stuff...
}
catch(Exception ex)
{
...log...
ViewData["ResultInfo"] = new ResultInfo(false, Resource.SAVE_NOT_SAVED, someErrorMessage);
}
return PartialView("Folder/SomeView", model);
}
Я хотел бы сделать это с помощью пользовательского атрибута HandleError, но я понимаю, что должно быть много ошибок, ожидающих кусаться.Кто-нибудь пробовал и хочет поделиться своим опытом?
РЕДАКТИРОВАТЬ:
Я закончил обработку ошибок в базовом классе контроллера.
Этот ErrorHandlingController имеет2 метода;RegisterErrorHandler и RegisterModel.Если обработчик ошибок найден зарегистрированным при обнаружении ошибки в базовом классе OnException, я просто добавляю ResultInfo и помечаю ошибку как обработанную и использую вид и заголовок ошибки, которые я установил в RegisterErrorHandler.
Таким образомочень легко передать модель в обработчик ошибок, и естественно использовать ресурсы напрямую, поскольку обработчик ошибок регистрируется как первая строка внутри метода, а не как атрибут вне него.