博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法【转发】
阅读量:5988 次
发布时间:2019-06-20

本文共 2262 字,大约阅读时间需要 7 分钟。

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:
Just a PartialView Test!@ViewBag.Test
@ViewBag.Test

 

View:

@{Html.RenderPartial("ViewUserControl1");} @Html.Partial("ViewUserControl1") @{Html.RenderAction("ViewUserControl1");} @Html.Action("ViewUserControl1")

 

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

 

        效果:
    

     

 

转载地址:http://vvjlx.baihongyu.com/

你可能感兴趣的文章
智能电视前传——盒子
查看>>
迅雷2014校园招聘笔试题
查看>>
WCF初体验 I (配置+示例说明)
查看>>
MFC右侧属性分栏用法
查看>>
LDAP 在ubuntu14.04下的安装配置install and configure
查看>>
欢迎加入Windows Vista开发团队!
查看>>
Python 开源异步并发框架的未来
查看>>
NLP资源
查看>>
Ajax Control Toolkit 34个服务器端控件
查看>>
POJ 1707 Sum of powers(伯努利数)
查看>>
BZOJ 1878 HH的项链(树状数组)
查看>>
SQL server 2005 表中某一字段的所有值逗号分开的列表
查看>>
艾伟_转载:C# .NET学习经验总结
查看>>
一起谈.NET技术,ASP.NET MVC Routing概述
查看>>
华为在英国成立安全认证中心
查看>>
杀毒软件3.15客服调查:360响应最快 瑞星最专业
查看>>
sort命令用法
查看>>
我的模块加载系统 v13
查看>>
GDB详解
查看>>
第十六章: 本地化
查看>>