天天看點

【MVC】什麼是 ChildAction

在視圖頁中,你或許經常需要注入一些有其他action的輸出, 例如,插入菜單。 大多情況,對于菜單的生成,可能牽涉到很多邏輯(取決于權限 、使用者等),是以生成過程不是放在局部視圖(Patial view)中,而是放在controller中:

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

這種類型的action 就叫做 ChildAction, 因為它不能也不應該被外部通過通路url所調用, 隻能被内部程式所調用,一般來說都是在另一個視圖中被調用。

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

如果當一個action被當作ChildAction調用時,你想針對這種調用做一些特殊的處理的話, 可以檢查 ActionExecutingContext.IsChildAction/ViewContext.IsChildAction 屬性。