Приложение ASP.NET MVC Методы контроллера разные:
При этом могут возникать два вида ошибок:
Не хотелось бы в коде контроллеров густо рассыпать try-catch, есть мысль ошибки валидации данных бросать исключениями, отлавливать их и системые ошибки в одном месте.
Возможно ли реализовать такое с помощью фильтров или как-то ещё?
Да, это можно сделать. Нужно реализовать интерфейс IExceptionFilter и полученный класс применить к нужным контроллерам. Вот ссылка на статью с примерами и описанием: Фильтры исключений
При необходимости можно применить фильтр глобально. Пример:
using System.Web.Mvc;
namespace WebApp2.Config
{
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new RangeExceptionAttribute());
}
}
}
Этот код вызывается из Global.asax
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
// Другая инициализация.
}
}
Внутри обработчика OnException ты можешь проанализировать исключение и сделать необходимые действия. Если тебе нужно реализовать разную логику реакции на разные исключения, ты можешь добавить несколько фильтров.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости