加载部分视图的方法:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage()
partial 与 RenderPartial 方法
Razor 语法: @Html.Partial() 与 @{Html.RenderPartial();}
区别:Partial 可以直接输出内容,它内部是将html内容转换为string字符(MVCHtmlString),然后缓存起来,最后在一次性输出到页面。
显然,这个转换的过程,会降低效率,所以通常使用 RenderPartial 代替。只是输出页面内容,不能执行方法(Action)。
RenderAction 与 Action
Razor 语法:
@Html.Action();与@{Html.RenderAction();}
区别:Action 也是直接输出,和 Partial 一样,也存在一个转换的过程。不如 RenderAction 直接输出到当前 HttpContext 的效率高。
除此之外,Action与Partial相比,Action访问了控制器中的Action,执行了Action内部的业务。
RenderPage 与 RenderPartial
Razor 语法:
@{Html.RenderPartial();} 与 @RenderPage()
区别:也可以使用 RenderPage 来呈现部分,但它不能使用 原来视图的 Model 和 ViewData ,只能通过参数来传递。而 RenderPartial 可以使用原来视图的 Model 和 ViewData。
@RenderPage也没有执行Action。
js调用视图:
$("#result").load("/home/message",function(){
//加载完之后隐藏进度条
});
部分视图的Action可以写在自己创建的BaseController里,然后每个Controller都继承这个类,不用每次都重新写。
public PartialViewResult SiteHeader(int CurrentPageID) { ViewBag.CurrentPageID = CurrentPageID; return PartialView("~/Views/Shared/SiteHeader.cshtml"); }
调用和传参:@{Html.RenderAction("SiteHeader", "Home", new { CurrentPageID = 1 });}