Html.Action和Html.RenderAction:ASP.NET MVC中的HTML辅助方法2014-08-13Html.Action和Html.RenderActionAction是执行单独的控制器操作并显示结果,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。