在视图里有多种方法能够 加载部分视图,包括:html
Partial() Action() RenderPartial() RenderAction() RenderPage() 方法。mysql
如下是这些方法的差异:sql
Partial 与 RenderPartial 方法数据库
1. Razor 语法:@Html.Partial() 与 @{Html.RenderPartial();}缓存
2. 区别:Partial 能够直接输出内容,它内部是 将 html 内容转换为 string 字符(MVCHtmlString),而后缓存起来,最后在一次性输出到页面。显然,这个转换的过程,会下降效率,因此一般使用 RenderPartial 代替。.net
RenderPartial 与 RenderAction 方法htm
1. Razor 语法:@{Html.RenderPartial();} 与 @{Html.RenderAction();}get
2. 区别:RenderPartial 不须要建立 Controller 的 Action ,而 RenderAction 须要在 Controller 建立要加载的 Action。string
RenderAction 会先去调用 Contorller 的 Action ,最后再 呈现视图,因此这里 页面会在 发起一个连接。it
若是这个部分视图只是一些简单 的 html 代码,请使用 RenderPartial。 但若是这个部分视图 除了有 html 代码外,还须要 经过 读取数据库里的数据 来渲染,就必须使用 RenderAction 了,由于 它能够在 Action 里调用 Model里的 方法读取数据库,渲染视图后在呈现,而 RenderPartial 没有 Action,因此没法作到。
RenderAction 渲染的部分视图 至关于 彻底独立的页面 内容和原页面的彻底独立(如Model ViewBag)
RenderPartial 渲染的部分视图 可使用原来视图的 Model 和 ViewData。
RenderAction 与 Action
1. Razor 语法:@{Html.RenderAction();} 与 @Html.Action();
2. 区别:Action 也是直接输出,和 Partial 同样,也存在一个转换的过程。不如 RenderAction 直接输出到 当前 HttpContext 的效率高。
RenderPage 与 RenderPartial 方法
1. Razor 语法:@{Html.RenderPartial();} 与 @RenderPage()