我有以下问题。在我的解决方案中,我有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内部,因此其View位于〜/ Views / Home / Repository.cshtml中,但它在Shared或Account文件夹中存在。正如我所说,如果HomeController类之上没有[Authorize],那么一切都按预期工作。
发生错误的代码在_Layout.cshtml
中@Html.Partial("Repository")
感谢您的帮助。
答案 0 :(得分:9)
_Layout.cshtml是整个应用程序的母版页。发生了什么事情是您的家庭控制器正在寻找经过身份验证的用户,发现用户未经过身份验证并重定向到帐户控制器中的登录操作。该操作然后呈现其视图,该视图使用_Layout.cshtml母版页,该母版页想要呈现局部视图但无法找到它,因为它不在“帐户”文件夹中。
简答:主页中的部分视图应位于〜/ Views / Shared目录中。或者将该部分调用移动到仅在Home控制器上下文中运行的页面。
答案 1 :(得分:0)
另外,请检查以下内容:确保将输出类型设置为相关页面的内容。这是由同行Joe F.向我指出的。无论出于何种原因,有时输出都没有正确设置。因此,当您宣传您的应用时,不会复制cshtml文件。