【ASP.NET MVC】HTML辅助方法

Html.Action和Html.RenderAction

Action是执行单独的控制器操作并显示结果,Action提供了更多的灵活性和重用性,因为控制器操作可以建立不用的模型,可以利用单独的控制器上下文,他们两个仅有的不同是:RenderAction可以直接写入响应流。下面看一下代码:

 1 public class MyController

 2 {

 3     public ActionResult Index()

 4     {

 5         return View();

 6     }

 7 

 8     [ChildActionOnly]

 9     public ActionResult Menu()

10     {

11         var menu=GetMenuFromSomewhere();

12         return PartialView(menu);

13     }

14 }

15 Menu操作构建一个菜单模型并返回一个带有菜单的分布视图

16 

17 @model Menu

18 <ul>

19 @foreach(var item in Model.MenuItem)

20 {

21     <li>@item</li>

22 }

23 </ul>

24 

25 在Index.cshtml视图中,可以调用Menu操作来显示菜单

26 <html>

27     <head></head>

28     <body>

29         @Html.Action("Menu")

30     </body>

31 </html>

32 

33 注意Menu操作使用了ChildActionOnlyAttribute特性来标记,这个

34 特性设置防止了运行时直接通过一个URL来调用Menu操作,相反,

35 只能通过Action或RenderAction来调用这个操作。

在ASP.NET MVC3中,在ControllerContext上也有一个称为IsChildAction的新属性,当通过Action或RenderAction方法调用操作时,它的值就为True,当通过一个URL调用时,它的值为false。

你可能感兴趣的:(asp.net)