我有一个具有以下结构的Umbraco网站:
Views/LayoutPageA.cshtml/
Views/ContentPageA.cshtml/
Views/ContentPageB.cshtml/
LayoutPageA包含:
<body>
...
RenderBody()
...
</body>
和ContentPageA和ContentPageB都包含:
@{
Layout = "LayoutPageA.cshtml";
}
显然,如果我导航到/LayoutPageA/ContentPageA/
或/LayoutPageA/ContentPageB/
页面加载正常但/LayoutPage/
会崩溃,因为:
文件&#34;〜/ Views / LayoutPageA.cshtml&#34;不能直接请求,因为它调用&#34; RenderBody&#34;方法
如何阻止用户通过网址导航到/LayoutPage/
?
答案 0 :(得分:1)
请勿使用Views/LayoutPageA.cshtml/
<a href="/controllerName/actionName">
或<%= Html.ActionLink("menu1", "actionName", "controllerName") %>
答案 1 :(得分:0)
MVC出现这种情况的唯一方法是,如果您有一个名为LayoutPageA
的动作,或者您明确返回LayoutPageA.cshtml
作为视图,例如:
return View("LayoutPageA");
所以,就是不要这样做。确保您的操作名称与布局名称不匹配,以便按照惯例将其视为将为操作加载的视图。防止这种情况偶然发生的一个好标准是在布局/部分前面加上下划线,即_LayoutPageA.cshtml
。由于动作名称不能以下划线开头,因此布局/部分永远不会按惯例匹配。