MVC Razor模板引擎中3个重要的方法:@RenderBody、@RenderPage、@RenderSection

1、@RenderBody

在Razor引擎中布局页面类似于asp.net中的母版页功能,视图的内容会和布局页面合并呈现。

当前视图内容会通过布局页面(Shared/_Layout.cshtml) 中的@RenderBody()方法呈现在标签之间。

默认布局页面设置:

_ViewStart.cshtml

@{

Layout = "~/Views/Shared/_Layout.cshtml";

}

当创建新视图时,不指定任何布局页面,默认会加载_ViewStart.cshtml中指定的布局页面。

如果不想使用默认布局页,可以在当前视图中设置Layout值,设置null不使用任何布局页。

注意:如_ViewStart.cshtml都是特定的名字,已下划线开头的都有特殊的意义。

2、@RenderPage

要引用呈现的视图,如网站头部、底部可单独放在一个共享的视图文件夹中,然后在布局页中使用。

方法调用,用法如下:

@RenderPage("~/Views/Shared/_Header.cshtml")

带参数

@RenderPage("~/Views/Shared/_Header.cshtml",new{name="tom",age=18)

调用页面获取参数:

//获取 RenderPage() 传递过来的参数

@PageData["name"]

3、@RenderSection

此方法就是在Layout布局页中定义了分段,留给使用该布局页的视图来实现。

也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来,用法如下:

@RenderPage(“~/Views/Shared/_Header.cshtml”)

@RenderBody()

@RenderSection(“footer”)

当然还要在视图中定义节,否则会出现异常:

@section footer {

Footer Here

}

为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:

@RenderSection(“footer”, false)

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

1、带有Render的办法返回值是void,在办法内部进行输出;不带的返回值类型为MvcHtmlString,所以只能如许应用:
    @Html.Partial 对应 @{Html.RenderPartial(....);}
    @Html.Action 对应 @{Html.RenderAction(....);}

2、Action、RenderAction加载办法的视图,履行Controller → Model → View的次序,然后把产生的页面带回到本来的View中再回传。而Partial、RenderPartial直接加载视图文件内容

使用方法:@Html.Action(action,
controller)加载局部页面。
例如在模板页中使用:@Html.Action("Contact",
"Company")
在CompanyController中有如下方法:
   public PartialViewResult Contact()

{
      return PartialView();
   }

3、 Html.Partial可以直接供给用户控件名作为参数,而Html.Action须要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。

4、对于简单的没有任何逻辑的用户控件,推荐应用Html.Partial;对于须要设置一些Model的用户控件,推荐应用Html.Action。当然,有Model数据也是可以应用Html.Partial办法的,可以看办法的重载。

5、应用Html.Action有个益处,就是可以按照不合的场景选择不合的用户控件。

比如:
@Html.Action("UserInfoControl")在对应的UserInfoControl这个Action中,在用户未登录的时辰,可以retun PartialView("LogOnUserControl");登录后,可以retun PartialView("UserInfoControl");

RenderPage()和RenderPartial()的区别:

RenderPage()调用的页面只能使用其传递过去的数据。

RenderPartial()是可以使用viewdata,model等数据的。

如:@{Html.RenderPartial("BasicChart",model);}

  用这个重载可以在部分视图里使用强类型,然后在主视图中使用第二个参数传model过去

@{Html.RenderPartial("BasicChart",ViewData["myData"]);}

Html.RenderPartial和Html.RenderAction的区别:

Html.RenderPartial适合用在重覆使用的UserControl,并且只需要透过Model来呈现内容,或是对于广告的UserControl也适合使用。

Html.RenderAction则会先去请求Controller的Action方法,如果此UserControl是需要透过资料库取得资料来呈现(透过Action来读取资料库),此时会比较适合使用此方式。

最新文章

  1. Autofac 组件、服务、自动装配 《第二篇》
  2. Wishart distribution
  3. javaweb学习总结(三十八)——事务
  4. Linux(Centos)之安装Java JDK及注意事项
  5. iOS进阶篇索引,标记和自定义的table
  6. 对部分Java名词的总结
  7. JavaScript语言知识收藏
  8. Tex使用
  9. hdu 4144 状态压缩dp
  10. 谈网页游戏外挂之用python模拟游戏(热血三国2)登陆
  11. 纯JS写最简单的图片轮播
  12. JSP的四个作用域
  13. Linux命令pmap
  14. ZOJ 4070 - Function and Function - [签到题][2018 ACM-ICPC Asia Qingdao Regional Problem M]
  15. ES5之函数的间接调用 ( call、apply )、绑定 ( bind )
  16. wpf数据绑定 - StringFormat的妙用
  17. 深入理解bootstrap框架之第二章整体架构
  18. 传参方法:sharedApplication, NSUserDefaults, protocol 和 delegate(实例)
  19. BZOJ 1977 严格次小生成树
  20. vmware中安装centos 6.7

热门文章

  1. 三角剖分算法(delaunay)
  2. Hadoop单机安装配置过程:
  3. 开发环境eclipse for Mac 下的常用快捷键汇总(基本参照Win系,将Ctrl换为Command)
  4. Erlang语言学习入门
  5. WEB安全番外第三篇--关于XXE
  6. [黑金原创教程] FPGA那些事儿《设计篇 II》- 图像处理前夕·续
  7. spring could Windows打包构建docker镜像到linux
  8. poj3735—Training little cats(特殊操作转化为矩阵操作)
  9. Oracle 删除表
  10. Yii2 里使用Redis扩展