本文共 847 字,大约阅读时间需要 2 分钟。
Html.Action和Html.RenderAction Action是执行单独的控制器操作并显示结果,Action提供了更多的灵活性和重用性,因为控制器操作可以建立不用的模型,可以利用单独的控制器上下文,他们两个仅有的不同是:RenderAction可以直接写入响应流。下面看一下代码: p
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
@foreach(var item in Model.MenuItem)
{
@item}
在Index.cshtml视图中,可以调用Menu操作来显示菜单
@Html.Action("Menu")
注意Menu操作使用了ChildActionOnlyAttribute特性来标记,这个特性设置防止了运行时直接通过一个URL来调用Menu操作,相反,只能通过Action或RenderAction来调用这个操作。
在ASP.NET MVC3中,在ControllerContext上也有一个称为IsChildAction的新属性,当通过Action或RenderAction方法调用操作时,它的值就为True,当通过一个URL调用时,它的值为false。
转载地址:http://reudv.baihongyu.com/