Asp.Net MVC中的RenderPartial 和 RenderAction

简介:

在Asp.Net MVC中要实现某个功能可以通过许多种方式,今天我们就来讨论下使用RenderPartial和RenderAction在视图中呈现部分内容之间的区别。

比如我们要呈现如下的图所示的内容

sshot-1

一般的情况下,我们可能需要在母板页中页中呈现此内容以保证该内容可以在每个使用该模板的视图中显示,并且这些内容需要结合具体的业务逻辑。上图所示的内容我们是在用户控件中生成的,这样做便于该内容与母板页或者具体的视图相分离。我们至少有两种方式来呈现这些内容。这里我们只讨论通过RenderPartial和RenerAction的方式呈现的区别以及斟酌权衡使用它们的利弊。

方式1:使用Html.RenderPartial方法(Asp.Net MVC Preview5 加入的新方法)

一个简单的例子

<% Html.RenderPartial( "SomeControl.ascx", ViewData.Model ); %>

可以看到,这个方法通过接受用户控件的文件名以及相应的可变化的数据进行用户控件的呈现

让我们看看使用这种方式的优点及缺点

  • 优点
    1. 使用简单,不需要建立任何action
  • 缺点
    1. 必须填写具体的用户控件文件路径而使视图得以呈现内容
    2. 视图需要为另外一个视图提供数据,即
      1. 视图需要承担组织实体数据的任务,而这恰恰应该是业务逻辑需要做的事情
      2. 由于上文所述的视图提供数据的特点,你可能会跳过控制器而直接向服务层甚至数据库发出请求。

方式2:使用Html.RenderAction方法

另外一种呈现用户控件内容的方式和一般情况下呈现视图的方式相同,即通过控制器决定呈现哪个具体的用户控件内容。RenderAction方法可以灵活的通过控制器选择呈现特定的视图、用户控件或部分内容。

一个简单的例子

<% Html.RenderAction<MyController>( x => x.ControllerAction() ); %>
  • 优点
    1. 让控制器做它该做的事情:组织逻辑及与业务逻辑之间的通信。
    2. 将实际使用的视图/用户控件抽象出来,便于未来的重构。
    3. 将控制器中的业务逻辑抽象出来,这也让你的业务逻辑可以专心做它该做的事。
    4. 使用lambda表达式,强类型
  • 缺点
    1. 必须新建一个action处理请求

Ok,have fan~










本文转自紫色永恒51CTO博客,原文链接:http://www.cnblogs.com/024hi/archive/2008/12/17/1356555.html ,如需转载请自行联系原作者


相关文章
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
51 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
82 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
60 0
|
4月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
4月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
151 0
|
7月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
87 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
214 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
176 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
114 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
185 0