我试图拒绝访问返回PartialViewResult
的操作;但这似乎是不可能的。如果我使用NonAction
属性标记操作方法,则页面将不会呈现,如果不标记,则可以使用URL获取该部分视图。
假设我在_Layout.cshtml
:
<section role="navigation">
@Html.Partial("PageParts/Sidebar")
@RenderSection("SidebarContents", required: false)
</section>
这是PageParts/Sidebar.cshtml
:
@Html.Partial("PageParts/Sidebar/Userinfo")
@{Html.RenderAction("getNavigation", "PageSemantics");}
这是PageSemanticsController.cs
:
public class PageSemanticsController : Controller {
public PartialViewResult getNavigation() {
NavigationModel nm = new NavigationModel();
return PartialView("PageParts/Sidebar/Navigation", nm);
}
}
最后这是~/Views/Shared/PageParts/Sidebar/Navigation.cshtml
:
@model NavigationModel
<nav id="main-nav">
[... Some code to create Navigation ...]
</nav>
此设置正常,但~/PageSemantics/getNavigation
可通过网址访问。
有没有办法在保持此设置工作的同时拒绝通过URL访问getNavigation
操作?
答案 0 :(得分:5)
尝试放置属性
[ChildActionOnly]
在getNavigation()
方法