【问题标题】:ASP.NET MVC 3 partial view not found找不到 ASP.NET MVC 3 部分视图
【发布时间】:2011-08-03 08:44:33
【问题描述】:

我有以下问题。在我的解决方案中,我有 2 个控制器:家庭和帐户。到目前为止一切正常。但是当我在 HomeController 上方添加 [Authorize] 时,例如

[Authorize]
public class HomeController : Controller
{
...

我明白了

System.InvalidOperationException: The partial view 'Repository' was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Account/Repository.aspx
~/Views/Account/Repository.ascx
~/Views/Shared/Repository.aspx
~/Views/Shared/Repository.ascx
~/Views/Account/Repository.cshtml
~/Views/Account/Repository.vbhtml
~/Views/Shared/Repository.cshtml
~/Views/Shared/Repository.vbhtml

部分视图存储库位于 HomeController 内,因此它的视图位于 ~/Views/Home/Repository.cshtml 中,但它被保存在共享或帐户文件夹中。正如我所说,如果 HomeController 类之上没有 [Authorize],那么一切都会按预期进行。

发生错误的代码在_Layout.cshtml中

@Html.Partial("Repository")

感谢您的帮助。

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    _Layout.cshtml 是整个应用程序的母版页。发生的情况是您的家庭控制器正在寻找经过身份验证的用户,发现该用户未经过身份验证并重定向到帐户控制器中的登录操作。然后,该操作将呈现其视图,该视图使用 _Layout.cshtml 母版页,该母版页想要呈现部分视图但找不到它,因为它不在 Account 文件夹中。

    简答:母版页中的部分视图应位于 ~/Views/Shared 目录中。或者将该部分调用移至仅在 Home 控制器上下文中运行的页面。

    【讨论】:

      【解决方案2】:

      另外,请检查以下内容:确保将输出类型设置为相关页面的内容。同行 Joe F 向我指出了这一点。出于某种原因,有时输出设置不正确。因此,当您推广您的应用时,不会复制 cshtml 文件。

      【讨论】:

        猜你喜欢
        • 2012-01-03
        • 2012-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        相关资源
        最近更新 更多