2012-06-02 51 views
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动作的访问,同时保持这个设置的工作?

回答

5

试图把属性

[ChildActionOnly] 

getNavigation()方法

+0

谢谢,这将返回一个消息像'动作“getnavigation”是只能由孩子request.' 是否有可能返回一个404? – Achilles

+2

我刚刚发现http://stackoverflow.com/questions/7888121/how-to-prevent-certain-internal-routes-from-being-accessed-by-the-user –

+0

谢谢,有一种方法可以返回404线程:) – Achilles

相关问题