1. RenderBody
在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中。在这个页面中,会看到标签里有这样一条语句:
@RenderBody()
其实它的作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。
这个方法不需要参数,而且只能出现一次。
2. RenderPage
从名称可以猜出来这个方法是要呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:
@RenderPage(“~/Views/Shared/_Header.cshtml”) 
带参数
@RenderPage(“~/Views/Shared/_Header.cshtml”,new{parm="my",parm2="you") 
调用页面获取参数:
//获取 RenderPage() 传递过来的参数
@PageData["param"] 
3. RenderSection
布局页面还有节(Section)的概念,也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来,用法如下:
@RenderPage(“~/Views/Shared/_Header.cshtml”) 
@RenderBody() 
//模板里添加了一个节
@RenderSection(“head”)
当然还要在视图中定义节,否则会出现异常:
@section head{ 
//do
}
为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:
@RenderSection("SubMenu", false)

@if (IsSectionDefined("SubMenu"))
{
@RenderSection("SubMenu", false)
}
else
{
<p>SubMenu Section is not defined!</p>
}

4.@Html.Partial
 Partial 每次都会创建自己的 TextWriter 实例并且把内容缓存在内存中. 最后把所有 writer输出的内容发送到一个 MvcString对象中
更多时候我们会使用 @{ Html.RenderPartial("Details"); } 而不是@Html.Partial

RenderPage()和RenderPartial()的区别

RenderPage()调用的页面只能使用其传递过去的数据。
而RenderPartial()是可以使用viewdata,model等数据的。

Html.RenderPartial和Html.RenderAction的区别

Html.RenderPartial适合用在重覆使用的UserControl,并且只需要透过Model来呈现内容,或是对于广告的UserControl也适合使用。 Html.RenderAction则会先去呼叫Controller的Action方法,如果此UserControl是需要透过资料库取得资料来呈现(透过Action来读取资料库),此时会比较适合使用此方式。

最新文章

  1. Enterprise Solution 管理软件开发框架流程实战
  2. Nginx 301重定向设置
  3. java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~
  4. MyEclipse使用技巧
  5. C语言王国探秘一
  6. RSA算法基础详解
  7. DEDE织梦常用的调用方法
  8. [hadoop] WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
  9. Light OJ 1005 - Rooks(DP)
  10. MVC View返回list列表
  11. Codeforces Round #258 (Div. 2) B. Sort the Array
  12. (十)foreac遍历、break和countinue以及标签和switch循环
  13. 批量创建IP方法
  14. ACM 海贼王之伟大航路(深搜剪枝)
  15. python 计算两个日期相差多少个月
  16. a标签 download base64 下载 网络失败
  17. ReactNative快速开发App一步到位
  18. 51单片机学习笔记(清翔版)(21)——ADDA数模转换
  19. django ajax提交form表单数据
  20. springboot集成druid+mybatis连接oracle数据库

热门文章

  1. thinkphp中的自动验证
  2. 转一篇简易易懂的android回调的实现---&gt;(转的)
  3. Android学习笔记(八)——四种基本布局
  4. SMTP协议--在cmd下利用bat命令行发送邮件
  5. 跟着百度学PHP[4]-OOP面对对象编程-2-属性和方法
  6. opencv png和jpg的叠加
  7. linux shell脚本常用语句
  8. linux下安装使用libuuid(uuid-generate)
  9. Bootstrap 3学习笔记 -栅格
  10. MySQL 中根据A表的ID查询B表数据