Html.partial和RenderPartial的用法与区别
Html.partial和RenderPartial都是输出html片段,区别在于
Partial是将视图内容直接生成一个字符串并返回(相当于有个转义的过程),RenderPartial方法是直接输出至当前 HttpContext(因为是直接输出,所以性能好)。因此它们在视图中的使用方式是不同的:
MVC2:
<%Html.RenderPartial("PartialView");%>输出到 HttpContext
<%=Html.Partial("PartialView")%> 输出为string 直接到页面
MVC3:
@Html.Partial("BasicChart")
@{
Html.RenderPartial("BasicChart");
}
Html.partial和RenderPartial的其它三个重载很有用,第二个重载@{Html.RenderPartial("BasicChart",model);}
用这个重载可以在部分视图里使用强类型,然后在主视图中使用第二个参数传model过去,而不用controller
比如从list中传其中一项myClass过去
第三个重载用来传ViewData同理,如:@{Html.RenderPartial("BasicChart",ViewData["myData"]);}

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();
}

效果:

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

  1. MVC中Html.Partial, RenderPartial, Action,RenderAction 区别

    1.  Html.partial和RenderPartial的区别 Html.partial和RenderPartial都是输出html片段,区别在于: @Html.Partial用于将分部视图渲染为 ...

  2. Asp.netMVC中Html.Partial,RenderPartial,Action,RenderAction区别和用法

    https://www.2cto.com/kf/201702/602449.html Partial 和RenderPartial: 这两个的性质都是一样, 只指把一个个View给镶入进来, 只是回传 ...

  3. Partial RenderPartial Action RenderAction 区别和用法

    为什么80%的码农都做不了架构师?>>>    区别: 1.Partial 与 RenderPartial 两个方法性质基本一样,只是把一个静态用户控件给嵌入进来. 2.Partia ...

  4. 转载ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别

    对这四个的区别做一个总结,清理一下思路,方便以后使用: 1.带有Render的方法返回值是void,在方法内部进行输出:不带的返回值类型为MvcHtmlString,所以只能这样使用:     @Ht ...

  5. MVC中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别

    Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. 1. Html.RenderPartial是直接将用户控件嵌入到界面上: <% ...

  6. @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 .(转)

    mvc renderaction   renderpartial  杂谈      Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. ...

  7. 从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例 【转】

    一.摘要 一个Url请求经过了Routing处理后会调用Controller的Action方法. 中间的过程是怎样的? Action方法中返回ActionResult对象后,如何到达View的? 本文 ...

  8. Asp.Net MVC中的RenderPartial 和 RenderAction 【转】

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

  9. html action能跨域么,ASP.NET MVC 中设置跨域

    原标题:ASP.NET MVC 中设置跨域 来源:GetPower cnblogs.com/gdpw/p/9236661.html 程序员共读整理发布,转载请联系作者获得授权ASP.NET MVC中设 ...

最新文章

  1. 晶体封装越小esr越大_晶体谐振器等效电路,负载谐振电阻,负载电容,品质因数...
  2. 用final修饰的HashMap,到底可不可以修改??
  3. android popupwindow 自定义背景,android – 无法将PopupWindow背景设置为透明
  4. 【转】PBOC3.0和PBOC2.0标准规范异同分析
  5. Java程序员必备 : Java反编译神器——“GUI” 资源分享
  6. 如何添加地图控件到Windows Phone 8的页面中
  7. 洛谷P1852 奇怪的字符串
  8. 吴恩达深度学习2.1练习_Improving Deep Neural Networks(Initialization_Regularization_Gradientchecking)
  9. CleanCodeHandbook Chapter 4: Binary Tree(25-32)
  10. dio设置自定义post请求_Flutter中的http网络请求
  11. (1)Spring框架----通俗易懂的IoC原理
  12. svn 服务器中文件删除,svn中如何彻底删除一个文件
  13. 局域网测试工具、局域网UDP、TCP端口诊断工具
  14. dell 恢复介质_使用 Dell 恢复介质重新安装操作系统
  15. 使用VUE脚手架搭建VUE项目
  16. java 中int常量池_Java基础2:基本数据类型与常量池
  17. 基于SSM实现的儿童疫苗信息管理系统设计与实现 毕业设计-附源码311930
  18. 时间序列平稳性的统计检验
  19. web和httpd协议
  20. 6.oop-类和对象

热门文章

  1. Notification详解
  2. Photoshop CS5软件安装资料及教程
  3. java并发性是指什么_java – 什么是“非阻塞”并发,它与普通并发性有什么不同?...
  4. Android在Java获取组件,在Java中解析HTML以获取Android应用
  5. Linux下查看nginx apache mysql php的编译参数
  6. java中javamail收发邮件实现方法
  7. fiddler 看懂瀑布图Timeline
  8. LUOGU P2966 [USACO09DEC]牛收费路径Cow Toll Paths
  9. HTML5API(5)
  10. PAT乙级(Basic Level)练习题-写出这个数 (20)