2012-06-02 53 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

相關問題