您的位置:首页 > Web前端 > HTML

如何选择Html.RenderPartial和Html.RenderAction及Html.RenderAction与Html.Action区别

2013-03-09 17:35 579 查看
Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的。

Html.RenderPartial直接调用View视图

Html.RenderAction允许你直接调用某一个Action,并把返回的结果直接显示在当前调用的View中。

一、Html.RenderPartial

    1、在Views文件夹->Shared文件夹,Shared文件夹右键添加视图,选中“创建分部视图”,文件名:MessageControl

          

@model List<string>
<ul>
@foreach (var item in Model)
{
<li>@item</li>
}
</ul>


    2、视图调用,分部视图MessageControl
<html>
<head>
<title>Index</title>
</head>
<body>
<div>
@{
var testObj = new List<string>()
{
"aaa", "bbb", "ccc"
};
}
@{Html.RenderPartial("MessageControl", testObj);}
</div>
</body>
</html>


二、Html.RenderAction

    1、创建控制器,方法

》控制器方法

public ActionResult Index2()
{
ViewBag.a = "测试";
return View();
}
》视图
<div>
@ViewBag.a
</div>


    2、视图调用,控制器方法
<html>
<head>
<title>Index</title>
</head>
<body>
<div>
@{Html.RenderAction("Index2", "Default1");}
或   @Html.Action("Index2","Default1")
</div>
</body>
</html>

注意:Html.Action不要放到{}中,使用@直接输出

三、通过JQuery去调用 控制器/方法,并把结果填充到ID为fuck的DIV中

<html>
<head>
<title>Index</title>
</head>
<body>
<div id="fuck">
</div>
</body>
</html>

<script type="text/javascript">
$("#fuck").load('/Default1/Index2');
</script>


四、Html.RenderAction与Html.Action区别?

Html.RenderAction会将内容写入到response中, 返回void。

Html.Action返回的是一个字符串(使用@直接输出)。

在Razor中,下面2中写法是等价的:

@Html.Action("ViewName")

@{Html.RenderAction("ViewName");}

你可以使用 Html.Action, 把Action View的输出保存到变量中, 但是Html.RenderAction不行.

Html.RenderAction会在执行的时候,直接把输出写进Response.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: