Html.Action与Html.RenderAction的用法与区别:RenderAction要写在代码中!!!1

 https://blog.csdn.net/sym218/article/details/38681531


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<MenuItem> 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<MenuItem> items = new List<MenuItem>();
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
<ul>
@foreach (var item in Model.Items)
{
<li><a href="@item.Url">@item.Text</a></li>
}
</ul>
4.在将要调用@Html.Action的视图中添加本例在Index.cshtml:

<div>
@Html.Action("MyMenu")
<hr />
@{
Html.RenderAction("MyMenu");
}
</div>
这是两种方式的调用。

 __________________________________________________ ____________________________ ____________________________ ____________________________ _______________________________

https://yq.aliyun.com/articles/499866/

@Html.Partial/@{Htmt.RenderPartial()}
@Html.Partial用于将分部视图渲染为字符串
@{Html.RenderPartial}将分布视图直接写入响应输出流,所以只能直接放在代码块中,不能放在表达式中(返回值是void)
 

 __________________________________________________ ____________________________ ____________________________ ____________________________ _______________________________

原文地址:https://www.cnblogs.com/kelelipeng/p/13071043.html