MVC未加载完整视图

时间:2012-08-07 17:36:40

标签: asp.net-mvc vb.net asp.net-mvc-3 razor

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

为什么不加载“抱歉,发生错误... ”消息,我该怎么做呢?谢谢。

1 个答案:

答案 0 :(得分:1)

  

它将它们重定向到〜/ Shared / Error.vbhtml,就像它应该

一样

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

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

result.ViewName = "~/Views/Shared/Error.vbhtml"