MVC加载部分视图Partial

加载部分视图的方法: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 });}

原文地址:https://www.cnblogs.com/xsj1989/p/6924197.html