Как отловить исключение или ошибку в представлении Site.master для приложения ASP.NET MVC? - PullRequest
0 голосов
/ 21 июля 2009

В представлении site.master у меня есть встроенный код, такой как:

<%=(ViewData["Name"] as Model).Name %>

Если ViewData ["Name"] имеет значение null, приведенный выше код вызовет исключение. Затем я хочу показать настроенное представление об ошибках пользователю. Я установил отображение ошибок как web.config:

   <customErrors mode="On" defaultRedirect="~/Error/Unknown">
        <error statusCode="404" redirect="~/Error/NotFound" />
        <error statusCode="403" redirect="~/Error/NoAccess" />
    </customErrors>

Мой контроллер ошибок:

 public class ErrorController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [AcceptVerbs(HttpVerbs.Get)]
        public ViewResult NotFound(string aspxerrorpath)
        {
            this.ViewData["HttpError::AspxErrorPath"] = aspxerrorpath;
            this.Response.StatusCode = (int)HttpStatusCode.NotFound;
            return this.View("NotFound");
        }

        [AcceptVerbs(HttpVerbs.Get)]
        public ViewResult NoAccess()
        {
            Response.StatusCode = (int)HttpStatusCode.Unauthorized;
            return View("NoAccess");
        }

        [AcceptVerbs(HttpVerbs.Get)]
        public ViewResult Unknown()
        {
            Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            return View("Unknown");
        }
}

Но я не могу исправить ошибку. Я получу ошибку в borwoser как

Ошибка сервера в «/» приложении. Ошибка выполнения ...

Это означает, что ошибка не была зафиксирована. Как решить эту проблему?

1 Ответ

2 голосов
/ 21 июля 2009

Пользовательские страницы ошибок в ASP.Net MVC обрабатываются атрибутом фильтра действий [HandleError]. Для получения дополнительной информации о том, как его использовать, см. ScottGu или сообщений Денни Таппенни об этом.

Этот вопрос также может относиться к вашей проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...