В моем приложении ASP.NET MVC я обрабатываю ошибки, переопределяя OnException в контроллере. Происходит следующее: если на странице возникает ошибка во время выполнения, страница Error.aspx открывает внутри страницу, на которой произошла ошибка. Вот код (с некоторыми дополнительными сообщениями об ошибках, удаленными):
Protected Overrides Sub OnException(ByVal filterContext As System.Web.Mvc.ExceptionContext)
MyBase.OnException(filterContext)
filterContext.ExceptionHandled = True
View("Error").ExecuteResult(ControllerContext)
End Sub
Страница Error.aspx находится в общем каталоге. В качестве примера, скажем, мой View имеет тип Author, а у моей модели свисает таблица Book, а у пользователя нет прав на чтение в Book. Когда я пытаюсь ссылаться на
<%=Model.Books.Count>
вся страница Error.aspx отображается в том месте, где должен был находиться счетчик. Как я могу получить это, чтобы перенаправить на страницу ошибки и оставить страницу проблемы позади?
Обновление:
Более простой пример - просто поставить
<% Throw New Exception("b0rkd")%>
вверху представления. Error.aspx полностью отображается в том месте, где вы поместили исключение, внутри исходной страницы.