是否可以拒绝通过URL访问PartialViewResult操作

Ach*_*les 1 security action asp.net-mvc-3

我试图拒绝访问返回的操作PartialViewResult; 但这似乎是不可能的.如果我使用NonAction属性标记action方法,则页面将不会呈现,如果不标记,则可以使用URL获取该部分视图.
假设我有这个_Layout.cshtml:

<section role="navigation">
    @Html.Partial("PageParts/Sidebar")
    @RenderSection("SidebarContents", required: false)
</section>
Run Code Online (Sandbox Code Playgroud)

这是PageParts/Sidebar.cshtml:

@Html.Partial("PageParts/Sidebar/Userinfo")
@{Html.RenderAction("getNavigation", "PageSemantics");}
Run Code Online (Sandbox Code Playgroud)

这是PageSemanticsController.cs:

public class PageSemanticsController : Controller {

    public PartialViewResult getNavigation() {
        NavigationModel nm = new NavigationModel();
        return PartialView("PageParts/Sidebar/Navigation", nm);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后这是~/Views/Shared/PageParts/Sidebar/Navigation.cshtml:

@model NavigationModel
<nav id="main-nav">
    [... Some code to create Navigation ...]
</nav>
Run Code Online (Sandbox Code Playgroud)

此设置工作正常,但~/PageSemantics/getNavigation可通过URL访问.有没有办法getNavigation在保持此设置工作的同时拒绝通过URL 访问操作?

Rap*_*aus 5

试着把属性

[ChildActionOnly]
Run Code Online (Sandbox Code Playgroud)

在你的getNavigation()方法上

  • 我刚刚找到http://stackoverflow.com/questions/7888121/how-to-prevent-certain-internal-routes-from-being-accessed-by-the-user (2认同)