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

时间:2012-06-02 12:56:01

标签: asp.net-mvc-3 security action

我试图拒绝访问返回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操作?

1 个答案:

答案 0 :(得分:5)

尝试放置属性

[ChildActionOnly]

getNavigation()方法