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。
本文介绍了ASP.NET MVC中Html.Action和Html.RenderAction的区别。Html.Action执行控制器操作并返回结果,允许灵活性和模型重用,而Html.RenderAction则直接将内容写入响应流。在示例中,`Menu`操作被标记为`ChildActionOnly`,只能通过Action或RenderAction调用,并展示了如何在`Index`视图中调用`Menu`操作显示菜单。
240

被折叠的 条评论
为什么被折叠?



