Html.Action和Html.RenderAction
Action是執行單獨的控制器操作並顯示結果,Action提供了更多的靈活性和重用性,因為控制器操作可以建立不用的模型,可以利用單獨的控制器上下文,他們兩個僅有的不同是:RenderAction可以直接寫入響應流。下面看一下代碼:
public class MyController { public ActionResult Index() { return View(); } [ChildActionOnly] public ActionResult Menu() { var menu=GetMenuFromSomewhere(); return PartialView(menu); } }
Menu操作構建一個菜單模型並返回一個帶有菜單的分布視圖
@model Menu <ul> @foreach(var item in Model.MenuItem) { <li>@item</li> } </ul>
在Index.cshtml視圖中,可以調用Menu操作來顯示菜單
<html> <head></head> <body> @Html.Action("Menu") </body> </html>
注意Menu操作使用了ChildActionOnlyAttribute特性來標記,這個特性設置防止了運行時直接通過一個URL來調用Menu操作,相反,只能通過Action或RenderAction來調用這個操作。
在ASP.NET MVC3中,在ControllerContext上也有一個稱為IsChildAction的新屬性,當通過Action或RenderAction方法調用操作時,它的值就為True,當通過一個URL調用時,它的值為false。
查看本欄目