0

我创建了一个自定义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>

为什么它不加载“对不起,发生错误...... ”消息,我该如何让它这样做?谢谢你。

4

1 回答 1

1

它将它们重定向到 ~/Shared/Error.vbhtml,就像它应该的那样

不,我怀疑情况并非如此。您可能还有其他一些正在呈现的视图Error.cshtmlError.vbhtml在您的网站上搜索其他地方是否存在此类文件。例如~/Views/XXX/Error.vbhtml,其中 XXX 是当前正在执行的控制器。

或者您也可以明确指定要加载的视图,而不是依赖于已建立的探测位置:

result.ViewName = "~/Views/Shared/Error.vbhtml"
于 2012-08-07T17:48:43.380 回答