Подтвердить что ты не робот

В ASP.NET MVC 3, что такое filterContext.IsChildAction?

Из его звуков он буквально является логическим значением того, является ли действие дочерним действием.

Я вижу этот бит кода довольно часто:

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

Кажется, что есть "дросселировать" ненужное выполнение кода... но что на самом деле означает filterContext.IsChildAction?

4b9b3361

Ответ 1

В просмотренных страницах вам часто может понадобиться вводить вывод другого действия на текущую страницу - например, вставляя меню. Генерация меню может включать в себя множество бизнес-логики (определение прав или пользователей, выбор выделенного элемента и т.д.), Поэтому это не делается в частичном представлении, а в контроллере.

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

Этот тип действия называется ChildAction, поскольку он не может (и не должен) быть вызван из внешнего мира (путем посещения URL-адреса). Это может быть вызвано только самим приложением, как правило, изнутри страницы просмотра.

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

И если вы хотите (или не хотите) делать некоторые конкретные вещи, когда выполняемое действие является дочерним действием, вы проверяете свойство filterContext.IsChildAction.