MVC部分视图的使用(Html.Partial/RenderPartial、Html.Action/RenderAction、RenderPage)

ASP.NET MVC 里页面往往会有许多重用的地方,可以进行封装重用。
使用部分视图有以下优点: 1. 可以简写代码。 2. 页面代码更加清晰、更好维护。
在视图里有多种方法可以 加载部分视图,包括: Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 方法

一、Partial与RenderPartial

1.Razor 语法: @Html.Partial() 与 @{Html.RenderPartial();}

2.区别:Partial 可以直接输出内容,它内部是将 html 内容转换为 string 字符(MVCHtmlString)(进行Html编码),然后缓存起来,最后在一次性输出到页面。显然,这个转换的过程,会降低效率,所以通常使用 RenderPartial 代替。 这两者都只是抓取分部视图页面内容,不能执行分部视图方法,所以用Partial或RenderPartial方法来显示分部视图不用建立对应的Action,因为不走Action.

二、Action与RenderAction

1.Razor 语法:@Html.Action()与@{Html.RenderAction();}
   2.区别:Action 也是直接输出,和 Partial 一样,也存在一个转换的过程。不如 RenderAction 直接输出到当前 HttpContext 的效率高。
除此之外,Action与Partial相比,Action访问了控制器中的Action,执行了Action内部的业务。

三、RenderPage

1.Razor语法:@RenderPage()
   2.区别:也可以使用 RenderPage 来呈现部分,但它不能使用 原来视图的 Model 和 ViewData ,只能通过参数来传递。而 RenderPartial、RenderAction 可以使用原来视图的 Model 和 ViewData。@RenderPage也并没有执行Action。

不传参的情况

<!DOCTYPE html>   
<html>  
<head>  
    <meta name="viewport" content="width=device-width" />  
    <title>Index</title>  
</head>  
<body>  
    <div>   
        <h3>我是首页</h3>  
        <section>  
            <h4>分部视图</h4>         
           @RenderPage("~/Views/Templates/Partial1.cshtml")  
        </section>  
    </div>  
</body>  
</html>  

传参的情况

<!DOCTYPE html>  
<html>  
<head>  
    <meta name="viewport" content="width=device-width" />  
    <title>Index</title>  
</head>  
<body>  
    <div>   
        <h3>我是首页</h3>  
        <section>  
            <h4>分部视图</h4>  
           @RenderPage("~/Views/Templates/Partial1.cshtml",new { param1="longxi",param2="男"})  
        </section>  
    </div>  
</body>  
</html>  

Partial1.cshtml

@{   
    var param = string.Format("{0}-{1}", PageData["param1"], PageData["param2"]);  
}  
@Html.Raw(param)  
时间: 2024-10-11 06:36:44

MVC部分视图的使用(Html.Partial/RenderPartial、Html.Action/RenderAction、RenderPage)的相关文章

MVC 在视图中获取当前的Controller、Action的方式

在视图中获取Controller和Action的方式: Controller: @ViewContext.RouteData.Route.GetRouteData(this.Context).Values["controller"] Action: @ViewContext.RouteData.Route.GetRouteData(this.Context).Values["action"] 或者: Controller: @ViewContext.RouteDat

MVC+EF 随笔小计——分部视图(Partial View)及Html.Partial和Html.Action差异

Partial View指可以应用于View中以作为其中一部分的View的片段(类似于之前的user control), 可以像类一样,编写一次, 然后在其他View中被反复使用. 一般放在"Views/Shared"文件夹中以共享. 创建Partial View:一般直接右键"Views/Shared"文件夹添加分部视图. 使用Partial View有两类helper : Html.Partial / Html.RenderPartial Html.Action

MVC 部分视图:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 区别

在视图里有多种方法可以 加载部分视图,包括: Partial()  Action()  RenderPartial()  RenderAction()  RenderPage() 方法. 以下是这些方法的差别: Partial 与 RenderPartial 方法 1. Razor 语法:@Html.Partial() 与 @{Html.RenderPartial();} 2. 区别:Partial 可以直接输出内容,它内部是 将 html 内容转换为 string 字符(MVCHtmlStri

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

Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上 @Html.Partial("ViewName") RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View @{            Html.RenderPartial("V

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

Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上 @Html.Partial("ViewName") RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View @{            Html.RenderPartial("V

mvc 分部视图(Partial)显示登陆前后变化以及Shared文件夹在解决方案资源管理器中没有显示的问题

刚开始我的解决方案资源管理器中没有显示Shared文件夹,但Shared文件夹在项目中是实际存在的,我搜了下好像没有类似的解答(可能是我搜索的关键词不够准确).后来自己看了下vs2012. 其实解决方法很简单: 首先,视图->解决方案资源管理器.在解决方案资源管理器中点击下图中的红色方框中那个"显示所有文件". 然后会出现类似图片中的文件,找到自己要的,鼠标右击一下,点击下图中红色方框中的“包括在项目中”即可. mvc分部视图显示登陆前后的变化 前后效果是这样的 登录前:: 登陆

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

Partial 和RenderPartial:这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上 @Html.Partial("ViewName") RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View @{            Html.RenderPartial("V

MVC 部分视图

ASP.NET MVC 里的部分视图,相当于 Web Form 里的 User Control.我们的页面往往会有许多重用的地方,可以进行封装重用. 使用部分视图有以下优点:   1. 可以简写代码. 2. 页面代码更加清晰.更好维护. 在视图里有多种方法可以 加载部分视图,包括: Partial() .RenderPartial() . Action() .RenderAction() . RenderPage() 方法 partial 与 RenderPartial 方法 Razor 语法:

MVC @RenderBody、@RenderSection、@RenderPage、@Html.RenderPartial、@Html.RenderAction

1.@RenderBody() 作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间.这个方法不需要参数,而且只能出现一次. 2.@RenderPage 从名称可以猜出来这个方法是要呈现一个页面.比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:@RenderPage("~/Views/Shared/_Header.cshtml&qu