c# - 在 ASP.NET MVC 3 中,什么是 filterContext.IsChildAction?

标签 c# asp.net-mvc

从字面上看,它是一个 bool 值,表示该 Action 是否为子 Action 。

我经常看到这段代码:

protected override void OnActionExecuting(ActionExecutingContext filterContext) {
    if (filterContext.IsChildAction) return;
    ...
}

它似乎在那里“限制”了不必要的代码执行……但是 filterContext.IsChildAction 到底是什么意思?

最佳答案

在 View 页面中,您可能经常需要将另一个操作的输出注入(inject)当前页面 - 例如,注入(inject)菜单。菜单生成可能涉及很多业务逻辑(确定权限或用户、选择所选项目等),因此它不是在分部 View 中完成的,而是在 Controller 中完成的。

public class MenuController : Controller
{
   [ChildActionOnly]
   public ActionResult Menu()
   {
      MenuViewModel model = GenerateMenu();
      return View(model);
   }
}

这种类型的操作称为 ChildAction,因为它不能(也不应该)从外部世界(通过访问 url)调用。这只能由应用程序本身调用,通常是在 View 页面中调用。

@Html.Action("Menu", "Menu")

如果您希望(或不希望)在执行的操作是子操作时做一些特定的事情,您可以检查 filterContext.IsChildAction 属性。

关于c# - 在 ASP.NET MVC 3 中,什么是 filterContext.IsChildAction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060979/

相关文章:

c# - 如何使用反射来执行显式实现的静态抽象方法

c# - ASP.NET Core 2.2 - 问题详情

c# - 禁用 vs2010 XNA 内容管道警告

c# - 使用 VS2017 for Mac 进行调试时,Azure 函数无法读取/访问 local.settings.json

asp.net-mvc - 是否可以在MVC和Webforms之间共享母版页?

asp.net-mvc - 使用Unity动态注入(inject)构造函数参数

c# - kendoui网格全选

c# - 在 MVC 中将 ASP.NET Identity 与我自己的实体结合使用

c# - ASP.NET MVC : Structuring Controllers

javascript - 将电子邮件数据绑定(bind)到 mailto 链接 json