未找到ASP.NET MVC 3局部视图

use*_*947 0 c# asp.net-mvc

我有以下问题.在我的解决方案中,我有2个控制器:主页和帐户.到目前为止一切都有效.但是当我在HomeController上面添加[Authorize]时,例如

[Authorize]
public class HomeController : Controller
{
...
Run Code Online (Sandbox Code Playgroud)

我明白了

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
Run Code Online (Sandbox Code Playgroud)

部分视图存储库位于HomeController内部,因此其View位于〜/ Views/Home/Repository.cshtml中,但它在Shared或Account文件夹中存在.正如我所说的,如果HomeController类之上没有[Authorize],那么一切都按预期工作.

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

@Html.Partial("Repository")
Run Code Online (Sandbox Code Playgroud)

感谢帮助.

Tal*_*joe 9

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

简答:主页中的部分视图应位于〜/ Views/Shared目录中.或者将该部分调用移动到仅在Home控制器上下文中运行的页面.