Я видел хороший пример, в котором класс контроллера MVC наследуется от другого класса контроллера, который обрабатывает исключение и возвращает представление с ошибкой внутри, например:
public class ApplicationController : Controller
{
public ActionResult NotFound()
{
return View("NotFound");
}
public ActionResult InsufficientPriveleges()
{
return View("InsufficientPriveleges");
}
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is NotFoundException)
{
filterContext.Result = NotFound();
filterContext.ExceptionHandled = true;
return;
}
if (filterContext.Exception is InsufficientPrivelegesException)
{
filterContext.Result = InsufficientPriveleges();
filterContext.ExceptionHandled = true;
return;
}
base.OnException(filterContext);
}
}
Однако я заметил, что, например, мой контроллер загружает в частичном виде что-то, к чему у пользователя не должно быть доступа, ошибка будет отображаться в частичном представлении на странице.
Я бы хотел, чтобы на всей странице отображалась ошибка, в действительности исключение должно перенаправить на совершенно новую страницу. Как я могу добиться этого, используя текущий класс, показанный выше?