`

.Net MVC中Html.RenderPartial和Html.RenderAction 的应用与区别

阅读更多

Html.Partial方法:是将视图内容直接生成一个字符串并返回,

Html.RenderPartial方法是直接输出至当前HttpContext,

而Html.RenderAction还调用一下Action。重新执行一次Controller → Model → View的顺序。

因此它们在视图中的使用方式是不同的。

 

Html.RenderPartial与Html.RenderAction 这个两个方法都是用于把MVC用户控件嵌入到View中。

 

Html.RenderPartial是直接将MVC用户控件嵌入到界面上

 

<%Html.RenderPartial("SupplierList ");%>

 

注意: MVC用户控件必须放在调用者同一目录下,也可以放在View/Shared中。

 

<%Html.RenderPartial("~/Views/ Supplier/SupplierList.ascx");%> 

 指明MVC用户控件所放的具体目录。

 

Html.RenderAction是通过Controller中的Action来调用MVC用户控件

 

在MVC 2.0中,新增加了Html.RenderAction();这个方法RenderPartial有点不一样,他是直接重新执行一次Controller → Model → View的顺序,然后把产生的页面带回到原来的View中再回传。

 

所以Html.RenderAction中传递的参数是执行的Controller和Action名称。若是在控制器中的某个方法只能让Html.RenderAction()调用时,可以在方法上添加特性[ChildActionOnly],其它的地方无法访问。

public class ChildActionOnlyTestController : Controller

{

[ChildActionOnly]

public ActionResult GetSupplierList()

{

var controller = new SupplierController();

return controller.SupplierList();

}

}

 

 

两者的相同点

 

RenderPartial和RenderAction通常都被用来显示一个功能相对独立的“块”,比如说显示菜单或者导航条。 两者输出的结果都被作为调用的View的一部分显示。

 

两者的不同点

 1.RenderPatial的数据来自于调用的View,而RenderAction来自自己。

 2.RenderAction会发起一个新的Request,而RenderPatial不会。

 

如何选择

 

根据两者不同点中的第二点,由于RenderAction会调用一个新的Action方法,而Asp.net Mvc中Action是最小的缓存单位,因此如果某一个“块”的数据比较固定,不会因为访问者的不同而发生变化,那么这时就是使用 RenderAction的时候了。 题外话,对于RenderAction会发起一个新的Request,感觉对调用页面的流程有点破坏。一个View在显示的时候,自己又发起一个 Request去获取数据来显示,显然有点破坏了作为一个View的原则:

 

  • 大小: 30.5 KB
分享到:
评论

相关推荐

    Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法

    此文档详细讲解了:Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法,值得学习

    C#中Html.RenderPartial与Html.RenderAction的区别分析

    本文较为详细的讲解了C#中Html.RenderPartial与Html.RenderAction的区别,具体分析如下: Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的。 Html.RenderPartial是直接将用户控件...

    ASP.NET MVC 3高级编程

    12.3 单元测试用于asp.net mvc应用程序的技巧和窍门 291 12.3.1 控制器测试 291 12.3.2 路由测试 296 12.3.3 验证测试 298 12.4 小结 302 第13章 扩展asp.net mvc 303 13.1 模型扩展 304 13.1.1 把请求数据...

    MVC页面之间参数传递解析

    关于MVC页面之间的传值,有多种方式,下面,我们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给大家分享一下有什么不同。 一、Html.RenderAction 方式页面之间传递参数的方式: Html.RenderAction 方式 ...

    C#中Convert.ToInt32()和int.Parse()的区别介绍

    Convert是一个类,继承自system.Object;int是值类型 Convert.ToInt32()内部就是调用了int.Parse()方法;... 您可能感兴趣的文章:C#中Html.RenderPartial与Html.RenderAction的区别分析c#中(int)、int.Parse()、

    Yii中render和renderPartial的区别

    同时还有个重要的区别: render 函数内部默认执行processOutput($output)函数, 会将把组件,比如 CTreeView 里面注册到 CClientScript 里面的 需要的脚本进行渲染输出。 而renderPartial() 默认不自动渲染输出...

    11. Render 部分partial与使用上的实例

    [Ruby_on_Rails][中文][Rails_5.x]__11._Render_部分partial與使用上的實例

    yii通过小物件生成view的方法

    本文实例讲述了yii通过小物件生成view的方法。分享给大家供大家参考,具体如下: 我们以manger为例子: 在生成的models 文件中,找到对应的表manger.php然后找到attributeLabels...$this-&gt;renderPartial('views',array

    Yii2.0多文件上传实例说明

    创建控制器FormController &lt;?...namespace frontend\controllers; use Yii; use yii\web\Controller;...use frontend\models\Uploadm;...class FormController extends ... return $this-&gt;renderPartial('myfiles',['mod

Global site tag (gtag.js) - Google Analytics