gpt4 book ai didi

asp.net-mvc - 在部分 View 中加载了MVC错误页面

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

我有一个错误页面,该页面的布局在大多数情况下都能正常工作,但是当 Controller 返回部分 View 时出现错误时,该错误页面及其布局将放置在部分 View 中。我认为那是合乎逻辑的,但我希望将错误页面加载为整页。如何在不更改所有错误处理的情况下完成此任务。

web.config:

<customErrors mode="On" defaultRedirect="~/Error">
<error statusCode="500" redirect="~/SystemPages/ErrorPage" />
<error statusCode="403" redirect="~/SystemPages/FileNotFound" />
<error statusCode="404" redirect="~/SystemPages/FileNotFound" />
</customErrors>

Global.asax:
Shared Sub RegisterGlobalFilters(ByVal filters As GlobalFilterCollection)
filters.Add(New HandleErrorAttribute())
End Sub

BaseController:
Protected Overrides Sub OnException(ByVal filterContext As ExceptionContext)

If filterContext Is Nothing Then Return

If TypeOf (filterContext.Exception) Is FaultException Then
Dim CodeName As String =
CType(filterContext.Exception, FaultException).Code.Name
Dim Message As String = CType(filterContext.Exception, FaultException).Message
TempData("ErrorMessage") = Message
Else
Logging.LogDebugData(HamtaDebugInformation(filterContext.RouteData))
Logging.WriteExceptionLog(filterContext.Exception)
TempData("ErrorMessage") = filterContext.Exception.Message
End If

Response.Redirect("/SystemPages/ErrorPage")

End Sub

SearchController:
   Function GetData() As ActionResult
...
Return PartialView("_Tab", vmData)

错误页:
@Code
ViewData("Title") = "ErrorPage"
Layout = "~/Views/Shared/_Layout.vbhtml"
End Code

<div id="mainContent" class="oneColumn">
<div class="panel">
<span class="panelTLC"></span>
<span class="panelTRC"></span>
<div id="inputPanel" class="panelContent">
<div class="modul">
<div class="modulHead">
<span class="TLC"></span>
<span class="TRC"></span>
</div>
<div class="modulContent">
<span class="TLC"></span><span class="TRC"></span>
<p>@ViewBag.ErrorMessage</p>
<p>@TempData("ErrorMessage")</p>
<span class="BLC"></span>
<span class="BRC"></span>
</div>
</div>
</div>
<span class="panelBLC"></span><span class="panelBRC"></span>
</div>
</div>

最佳答案

您可以只使用try catch块,并在catch中返回View()而不是PartialView()。

Function GetData() As ActionResult
Try
...
Return PartialView("_Tab", vmData)
Catch ex as Exception
//Handle exception here ( send to error log, etc)
Return View("~/SystemPages/ErrorPage")
End Try

要么

web.config:
<customErrors mode="On"/>

BaseController:
Protected Overrides Sub OnException(ByVal filterContext As ExceptionContext)

If filterContext Is Nothing Then Return

Dim Message As String

If TypeOf (filterContext.Exception) Is FaultException Then
Dim CodeName As String =
CType(filterContext.Exception, FaultException).Code.Name
Message = CType(filterContext.Exception, FaultException).Message
Else
Logging.LogDebugData(HamtaDebugInformation(filterContext.RouteData))
Logging.WriteExceptionLog(filterContext.Exception)
Message = filterContext.Exception.Message
End If

Response.Redirect(String.Format("~/Error/HttpError/?message={1}", "HttpError", Message))

End Sub

ErrorController:
public class ErrorController : Controller
{
// GET: /Error/HttpError
public ActionResult HttpError(string message) {
return View("ErrorTest", message);
}

此帖: ASP.NET MVC Custom Error Handling Application_Error Global.asax?

介绍如何分别处理每种类型的错误。请记住,您是在basecontroller中而不是global.asax文件中处理异常。如果您能够更改异常处理,那将是更好的方法。

关于asp.net-mvc - 在部分 View 中加载了MVC错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13088593/

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