1
我试图拒绝访问一个操作返回PartialViewResult
;但似乎是不可能的。如果我使用NonAction
属性标记动作方法,页面将不会呈现,如果我不这样做,则可以使用URL获取该部分视图。
假设我有这样的_Layout.cshtml
:是否有可能通过URL拒绝访问PartialViewResult操作
<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访问。 有没有什么方法可以通过URL拒绝对getNavigation
动作的访问,同时保持这个设置的工作?
谢谢,这将返回一个消息像'动作“getnavigation”是只能由孩子request.' 是否有可能返回一个404? – Achilles
我刚刚发现http://stackoverflow.com/questions/7888121/how-to-prevent-certain-internal-routes-from-being-accessed-by-the-user –
谢谢,有一种方法可以返回404线程:) – Achilles