gpt4 book ai didi

asp.net-mvc - 异常处理在当前页面内打开错误页面

转载 作者:行者123 更新时间:2023-12-03 07:51:40 25 4
gpt4 key购买 nike

在我的ASP.NET MVC应用程序中,我通过覆盖 Controller 中的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")%>

在 View 顶部。在原始页面内放置异常的位置,Error.aspx会完全呈现。

最佳答案

编辑

如果在处理结果时发生异常,则替换结果将不起作用,因为结果已被呈现。在这种情况下,您可以尝试清除现有结果并显式呈现错误结果。

protected override void OnException( ExceptionContext filterContext )
{
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.ClearContent();
ViewResult view = new ViewResult { ViewName = "Error" };
view.ExecuteResult( filterContext.Controller.ControllerContext );
}

原始

将filterContext上的结果设置为您的错误 View ,而不是将错误 View 呈现给响应。
 filterContext.ExceptionHandled = true;
filterContext.Result = View("Error" );

关于asp.net-mvc - 异常处理在当前页面内打开错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com