Ответ 1
В просмотренных страницах вам часто может понадобиться вводить вывод другого действия на текущую страницу - например, вставляя меню. Генерация меню может включать в себя множество бизнес-логики (определение прав или пользователей, выбор выделенного элемента и т.д.), Поэтому это не делается в частичном представлении, а в контроллере.
public class MenuController : Controller
{
[ChildActionOnly]
public ActionResult Menu()
{
MenuViewModel model = GenerateMenu();
return View(model);
}
}
Этот тип действия называется ChildAction, поскольку он не может (и не должен) быть вызван из внешнего мира (путем посещения URL-адреса). Это может быть вызвано только самим приложением, как правило, изнутри страницы просмотра.
@Html.Action("Menu", "Menu")
И если вы хотите (или не хотите) делать некоторые конкретные вещи, когда выполняемое действие является дочерним действием, вы проверяете свойство filterContext.IsChildAction
.