当前位置: 首页 > news >正文

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

本文转自:http://www.cnblogs.com/gesenkof99/archive/2013/06/03/3115052.html

 

Partial 和RenderPartial:
这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传值有点不一样
Partial 回传的一个Object (MvcHtmlString), 回传一个String 把一堆Html给回传出来, 然后写进到主页面上

@Html.Partial("ViewName")

RenderPartial 回传的是void, 而这个方法会在主页面上添加指定的View

@{
            Html.RenderPartial("ViewName");
    } 

这两个方法没有用到Controller, 是直接把一个View(Page) 给加进来
而RenderAction 有点不一样, 这是一个Action, 所以会用到Controller 之后再回传一个页面

public class ChildActionOnlyTestController : Controller

{

  [ChildActionOnly]

  public ActionResult GetSupplierList()

  {

    var controller = new SupplierController();

    return controller.SupplierList();

  }

}

 

RenderPartial和RenderAction两者的相同点

通常都被用来显示一个功能相对独立的“块”,比如说显示菜单或者导航条。 两者输出的结果都被作为调用的View的一部分显示。

两者的不同点

  1. RenderPatial的数据来自于调用的View,而RenderAction来自自己。
  2. RenderAction会发起一个新的Request,而RenderPatial不会。

 

 

@Html.Partial/@{Htmt.RenderPartial()}
@Html.Partial用于将分部视图渲染为字符串
@{Html.RenderPartial}将分布视图直接写入响应输出流,所以只能直接放在代码块中,不能放在表达式中(返回值是void)
 
RenderPartial因为是直接写在响应流中,所以性能会更好(微量影响),而Partial不用写在代码块中,所以更方便
 
@Html.Action()/@Html.RenderAction()
和Partial与RenderPartial类似,但是因为会通过Action,所以更灵活,可以利用控制器上下文。
在Action中可以通过IsChildAction来判断是被Url直接调用还是被Action()/RenderAction()调用
可以利用重载直接参数给Action。
RenderAction优先使用ActionNameAttribute。
Action中使用return PartialView()指定分部视图,在_ViewStatrt.cshtml中指定的Layout会无效。
 
4种PartialView对比:
PartialView:
<div>Just a PartialView Test!@ViewBag.Test</div>
@ViewBag.Test

 

View:
<p>
    @{Html.RenderPartial("ViewUserControl1");}
    @Html.Partial("ViewUserControl1")
    @{Html.RenderAction("ViewUserControl1");}
    @Html.Action("ViewUserControl1")
</p>

 

Controller:
复制代码
Controller:
[ChildActionOnly]//防止直接调用
public ActionResult ViewUserControl1()
{
    ViewBag.Test = "(Action)调用";
    return PartialView();
}
复制代码

 

        效果:
    

     

 

相关文章:

  • PowerManager Android 电源管理
  • ZeroMQ接口函数之 :zmq_strerror - 获取ZMQ错误描述字符串
  • 世界国家省份城市县区街道村地址邮编常用通用功能最全API - 多级联动 - 淘宝天猫阿里巴巴技术赏析...
  • ×××S 2012 Report Items -- 独立报表单元
  • 基于Netty与RabbitMQ的消息服务
  • 32_使用BeanUtils工具包操作JavaBean
  • 常用HTTP状态码
  • 怎样将U盘设置成只读属性
  • Sum、if、mod隔列求和
  • 有关android 应用的plugin框架调研
  • 数据结构之查找(php代码实现)
  • redis常用命令
  • (太强大了) - Linux 性能监控、测试、优化工具
  • Centos 源代码以及编译过程
  • PHP_NoteBook
  • hexo+github搭建个人博客
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • EventListener原理
  • JavaScript的使用你知道几种?(上)
  • js 实现textarea输入字数提示
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • OSS Web直传 (文件图片)
  • PhantomJS 安装
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 测试如何在敏捷团队中工作?
  • 大数据与云计算学习:数据分析(二)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 如何用vue打造一个移动端音乐播放器
  • 我是如何设计 Upload 上传组件的
  • 写给高年级小学生看的《Bash 指南》
  • 运行时添加log4j2的appender
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​渐进式Web应用PWA的未来
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #pragam once 和 #ifndef 预编译头
  • (30)数组元素和与数字和的绝对差
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (八)Flask之app.route装饰器函数的参数
  • (待修改)PyG安装步骤
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转载)虚函数剖析
  • ******之网络***——物理***