McvContrib имеет атрибуты "Спасение" - идея, заимствованная из монорельса. Вы можете сделать так:
[Rescue("default", AutoLocate = true)]
public class MyController : ConventionController
Затем вы создаете спасательные виды на основе соглашения следующим образом:
- Views / Shared / Спасает / Exception.aspx
- Views / Shared / Спасает / MyCustomException.aspx
Etc. Когда в контроллере происходит необработанное исключение, фильтр восстановления отображает страницу с тем же именем, что и тип исключения. Если точное совпадение не найдено, он отображает Exception.aspx. (Я думаю, что, возможно, он работает по иерархии наследования до тех пор, пока не найдет совпадение.)
Эти аварийные представления реализуют ViewPage , поэтому на странице представления вы получаете доступ к исключению как ViewData.Model.Exception. Это единственное место, где я помещаю код в коде позади - для регистрации исключения - потому что это создает хорошую границу приложения.
Если вы не хотите использовать MvcContrib, вы можете изучить код для реализации собственного решения.