gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:30:22 26 4
gpt4 key购买 nike

从字面上看,它是一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com