Action是执行单独的控制器并且显示结果,Action与RenderAction不同的是,Action返回的是字符串,而RenderAction是写入响应流,因此RenderAction是要写在代码中:
@Html.Action("test")
@{
Html.RenderAction("test");
}
下面来介绍怎样具体实现Html.Action:
1.首先在Models里面创建两个类:Menu.cs 和MenuItem.cs
public class Menu
{
public List Items { get; set; }
}
public class MenuItem
{
public string Text { get; set; }
public string Url { get; set; }
}
2.在Controllers添加代码:
[ChildActionOnly]
public ActionResult Menus()
{
Menu menu = new Menu();
List items = new List();
items.Add(new Models.MenuItem() { Text = "Baidu", Url = "http://www.baidu.com" });
items.Add(new Models.MenuItem() { Text = "Sina", Url = "http://www.sina.com" });
items.Add(new Models.MenuItem() { Text = "Sohu", Url = "http://www.sohu.com" });
items.Add(new Models.MenuItem() { Text = "IBM", Url = "http://www.ibm.com" });
menu.Items = items;
return PartialView(menu);
}
其中[ChildActionOnly]这个特性设置了防止运行时直接通过一个URL调用Menu操作,只能通过Action和RenderAction操作。这个特性不是必须要用的。
3.创建Menus视图:
@model Example.Models.Menu
@foreach (var item in Model.Items)
{
@item.Text}
[email protected]tml:
@Html.Action("MyMenu")
@{
Html.RenderAction("MyMenu");
}
这是两种方式的调用。
__________________________________________________ ____________________________ ____________________________ ____________________________ _______________________________
@Html.Partial/@{Htmt.RenderPartial()}
@Html.Partial用于将分部视图渲染为字符串
@{Html.RenderPartial}将分布视图直接写入响应输出流,所以只能直接放在代码块中,不能放在表达式中(返回值是void)
__________________________________________________ ____________________________ ____________________________ ____________________________ _______________________________
原文:https://www.cnblogs.com/kelelipeng/p/13071043.html