3

我有一个 MVC 4 项目,我在其中实现了 HandleError 属性,以便在发生任何异常时显示我自己的自定义错误页面。

这是我的错误控制器:

Public Class ErrorController
    Inherits BaseController

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

但是,我不知道如何访问控制器或视图的异常消息和堆栈跟踪。我读过它可以通过模型访问,但是你如何访问模型?

4

2 回答 2

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-在 ajax 和非 ajax 请求之间在 asp-net-mvc/

于 2013-09-24T14:23:00.433 回答
0

您需要ModelType在错误视图中设置(@model在 C# Razor 中):

@ModelType HandleErrorInfo 
于 2013-09-24T14:34:17.673 回答