2013-09-24 6 views
3

У меня есть проект MVC 4, в котором я реализовал атрибут HandleError, чтобы он показывал мою собственную страницу ошибок при возникновении какого-либо исключения.MVC HandleError - Получение сведений об исключении

Вот мой контроллер Error:

Public Class ErrorController 
    Inherits BaseController 

    Function Index() As ActionResult 
     Return View() 
    End Function 
End Class 

Однако, я не могу понять, как получить доступ к сообщению исключений и трассировки стека либо контроллер или вид. Я читал, что к нему можно получить доступ через модель, но как получить доступ к модели?

ответ

2

Ошибка должна быть типа System.Web.Mvc.HandleErrorInfo

мнение может выглядеть следующим образом:

@model HandleErrorInfo 
@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    ViewBag.Title = "Error"; 
} 
<section id="error-page"> 
    <div> 
     <h1>@ViewBag.Title</h1> 
     <div class="alert alert-error"> 
      An unexpected Error has occured.<br /> 
     </div> 
    </div> 
    @if (Model != null && HttpContext.Current.IsDebuggingEnabled) 
    { 
     <div> 
      <p> 
       <b>Exception:</b> @Model.Exception.Message<br /> 
       <b>Controller:</b> @Model.ControllerName<br /> 
       <b>Action:</b> @Model.ActionName 
      </p> 
      <div> 
       <pre> 
        @Model.Exception.StackTrace 
       </pre> 
      </div> 
     </div> 
    } 
</section> 

Если вы задаетесь вопросом, как получить модель исключения как в AJAX & не-Ajax-вызовы посмотреть на этом блоге: http://blog.christopheargento.net/2012/06/14/unify-exception-handling-between-ajax-and-non-ajax-requests-in-asp-net-mvc/

+0

Что это за первая строка кода в VB? @model HandleErrorInfo –

+0

Я вообще не знаю VB. Но в aspx это было бы что-то вроде <% @ Page Language = "C#" Inherits = "System.Web.Mvc.ViewPage "%> – Sam7

+0

@ModelType System.Web.Mvc.HandleErrorInfo – Sam7

0

Вы должны установить ModelType на ваш взгляд ошибки (будет @model в C# Razor):

@ModelType HandleErrorInfo 
+0

Знаете ли вы, как это сделать в бритве VB.NET? –

+0

@JeffStock Это VB.NET («ModelType»). – mattytommo

Смежные вопросы