Welcome 微信登录

首页 / 网页编程 / ASP.NET / Html.Action和Html.RenderAction:ASP.NET MVC中的HTML辅助方法

Html.Action和Html.RenderAction:ASP.NET MVC中的HTML辅助方法2014-08-13Html.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。