我创建了一个自定义AuthorizeAttribute
,如果用户无权查看所请求的控制器,则会将用户发送到错误页面。
重定向它们的代码如下:
Protected Overrides Sub HandleUnauthorizedRequest(filterContext As AuthorizationContext)
Dim result = New ViewResult()
result.ViewName = "Error"
result.ViewBag.ErrorMessage = "oops, you are not allowed"
filterContext.Result = result
End Sub
它将它们重定向到~/Shared/Error.vbhtml
,就像它应该的那样;但是,页面仅加载我的布局并包含标题"Error"
,但不会加载错误页面的任何内容。
错误页面的内容如下:
@ModelType System.Web.Mvc.HandleErrorInfo
@Code
ViewData("Title") = "Error"
End Code
@ViewBag.ErrorMessage
<h2>
Sorry, an error occurred while processing your request.
</h2>
为什么不加载“抱歉,发生错误... ”消息,我该怎么做呢?谢谢。
答案 0 :(得分:1)
它将它们重定向到〜/ Shared / Error.vbhtml,就像它应该
一样
不,我怀疑情况并非如此。您可能还有其他正在呈现的Error.cshtml
或Error.vbhtml
视图。在其他地方搜索您的网站是否存在此类文件。例如~/Views/XXX/Error.vbhtml
,其中XXX是当前正在执行的控制器。
或者您也可以明确指定要加载的视图,而不是依赖于已建立的探测位置:
result.ViewName = "~/Views/Shared/Error.vbhtml"