Asp.Net MVC中的RenderPartial 和 RenderAction

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

 

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

 

 

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

 

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

 

一个简单的例子

 

 

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

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

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

方式2:使用Html.RenderAction方法

 

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

一个简单的例子

 

 

(Csdbfans注:我不知道上面的这种写法是怎么指出Action的,按我的想法是Html.RenderAction<MyController>,这里是<MyController>指出是哪个Controller的,但我就没有弄明白x => x.ControllerAction(),这个x是指页面的强类型吗?好像不大可能出现有专门的类型来指定Action名的吧,希望有会的朋友解释解释,谢谢!)

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

Ok,have fan~

 

 

作者:紫色永恒

出处:http://024hi.cnblogs.com/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值