ASP.NET MVC:仅由其他操作调用的Action

ajb*_*ven 3 asp.net-mvc asp.net-mvc-2

我想制作一个GET操作,只有在被另一个操作调用时才会运行,所以如果用户在地址栏中键入URL则不会.我可以检查以确定是否是这种情况?

And*_*ass 15

您可以使用ChildActionOnlyAttribute修饰操作.

  [ChildActionOnly]
  public ActionResult Menu() {
    var menu = GetMenuFromSomewhere();
      return PartialView(menu);
  }
Run Code Online (Sandbox Code Playgroud)

然后,您可以像往常一样使用RenderAction()和Action()Html助手,并且不能通过URL调用该操作.

这些是MVC 2的新功能,但是从标签中我假设您已经在使用它.

示例:http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx


Ufu*_*arı 12

将该动作的acces修饰符设为私有.由于它是一个私有方法,它不是一个动作方法,不能通过URL调用:

private ActionResult PrivateAction()
{
    return View("SomeView");
}
Run Code Online (Sandbox Code Playgroud)

然后从动作方法中调用它:

public ActionResult SomeAction()
{
    if(someCondition)
        return PrivateAction();
}
Run Code Online (Sandbox Code Playgroud)