MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction...
一、Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页
@RenderBody
当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过_Layout.cshtml布局页面的@RenderBody()方法呈现在标签之间。
@RenderPage
从名称可以猜出来这个方法是要呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:
@RenderPage(“~/Views/Shared/_Header.cshtml”)
带参数
@RenderPage(“~/Views/Shared/_Header.cshtml”,new{parm="my",parm2="you")
调用页面获取参数:
//获取 RenderPage() 传递过来的参数
@PageData["param"]
@RenderSection
布局页面还有节(Section)的概念,也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来
为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:
@RenderSection("head", false)
或
@if (IsSectionDefined("head"))
{
@RenderSection("head", false)
}
else
{
<p>SubMenu Section is not defined!</p>
}
代码如下:
- <!DOCTYPE html>
- <html>
- <head>
- <title>@ViewBag.Title</title>
- <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
- <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
- @RenderSection("head", required: true)@*View页面自定义特定js/css使用*@
- </head>
- <body>
- @RenderPage("~/Views/Shared/_Header.cshtml")
- @RenderBody()
- </body>
- </html>
二、创建视图,使用母版页
代码如下:
- @{
- ViewBag.Title = "Index";
- Layout = "~/Views/Shared/_Layout.cshtml";
- }
- <h2>Index</h2>
- @section Head{
- <script type="text/javascript">
- $(function () {
- alert("hello jquery");
- });
- </script>
- }
- <p>执行C#普通语法</p><br />
- @DateTime.Now.Date.ToShortDateString()
- <p>执行C#语句段</p>
- @{
- List<string> list = new List<string> { "Mvc3", "Razor" };
- list.Add(".Net4");
- }
- <ul>
- @foreach(string s in list)
- {
- if (string.IsNullOrEmpty(s))
- {
- <li>空</li>
- }
- else
- {
- <li>@s</li>
- }
- }
- </ul>
三、生成页面的源代码
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
alert("hello jquery");
});
</script>
</head>
<body>
<h2>Index</h2>
<p>执行C#普通语法</p><br />
2013/3/11
<p>执行C#语句段</p>
<ul>
<li>Mvc3</li>
<li>Razor</li>
<li>.Net4</li>
</ul>
</body>
</html>
四、@Html.Partial
Partial 每次都会创建自己的 TextWriter 实例并且把内容缓存在内存中. 最后把所有 writer输出的内容发送到一个 MvcString对象中
更多时候我们会使用 @{ Html.RenderPartial("Details"); } 而不是@Html.Partial
Html.RenderPartial()与@Html.Partial的区别
Html.RenderPartial 直接输出至当前 HttpContext(因为是直接输出,所以性能好)。
Html.Partial 将视图内容直接生成一个字符串并返回(相当于有个转义的过程)。
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、带有Render的方法返回值是void,在方法内部进行输出;不带的返回值类型为MvcHtmlString,所以只能这样使用:
@Html.Partial 对应 @{Html.RenderPartial(....);}
@Html.Action 对应 @{Html.RenderAction(....);}
2、Html.Partial可以直接提供用户控件名作为参数,而Html.Action需要有对应的Action,在Action内部返回PartailResult(即retun PartialView())。
3、对于简单的没有任何逻辑的用户控件,推荐使用Html.Partial;对于需要设置一些Model的用户控件,推荐使用Html.Action。当然,有Model数据也是可以使用Html.Partial方法的,可以看方法的重载。
4、使用Html.Action有个好处,就是可以根据不同的场景选择不同的用户控件。
比如:
@Html.Action("UserInfoControl")
在对应的UserInfoControl这个Action中,在用户未登录的时候,可以retun PartialView("LogOnUserControl");登录后,可以retun PartialView("UserInfoControl");
MVC Razor模板引擎 @RenderBody、@RenderPage、@RenderSection及Html.RenderPartial、Html.RenderAction...相关推荐
- razor生成html,MVC Razor模板引擎输出HTML或者生产HTML文件
以前做CMS的时候都会根据模板来生成输出HTML或者生成HTML文件. 常用的引擎有VTemplate.NVelocity等等,这个我就布做介绍了. 这里我想说的是.当mvc出现Razor模板引擎的时 ...
- MVC Razor模板引擎
一.Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页 @RenderBody 当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合 ...
- ASP.NET MVC Razor视图引擎
本篇文章我们一起来讨论ASP.NET MVC框架中的Razor视图引擎.主要包含以下内容: Razor简介 Razor语法 Razor如何呈现页面 布局页(Layout) Razor简介 Razor是 ...
- .NET Core中使用Razor模板引擎
一.简介 在MVC以外的场景中,我们往往需要完成一些模板引擎生成代码或页面的工作:在以前我们一般常用的有Razor.NVeocity.VTemplate.虽然所有的模板系统都具有一些共同特征,但 Ra ...
- ORM MVC、模板引擎介绍(建议收藏)
ORM ORM 一.什么是ORM 二.认知 ORM 三.数据库和对象的映射关系 四.优缺点 五.常用的 ORM 库 MVC 什么是MVC 模板引擎 ORM 一.什么是ORM ORM是随着面向对象的软件 ...
- PHP MVC及模板引擎
连接到此文 模板引擎,这四个字听起来很高深的样子,一般用到"引擎"两字都会感觉比较高级,类似游戏3D引擎.Zend引擎等,其实都是唬人的,骗外行人的.所以在我初学PHP的那会,也因 ...
- MVC View显示详解(RenderBody,RenderPage,RenderSection,Partial)
一.Views文件夹 -> Shared文件夹下的 _Layout.cshtml 母版页 @RenderBody 当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合 ...
- MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别
近来在学习MVC 4.0,设置布局全局网页的页脚,使用了Razor语法 @{Html.RenderPartial("Footer", Model.FooterData);} 但是并 ...
- @RenderBody @RenderPage @RenderSection
@RenderBody 介绍 当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过_Layout.cshtml布局页面的@RenderBody( ...
最新文章
- 比特币官网管理者因支持BCH被建议移交权限
- STC89C52单片机 点亮两个数码管,可以显示 00——10 共 11 个数字
- 5.5.3 per-connection time zone support
- 市场调研策划书_市场调查计划书模板
- Python爬虫入门并不难,甚至入门也很简单
- python3 redis长链接超时_Python3 连接Redis字符串和字节问题探究
- Android按钮圆角样式和边框波浪线样式
- JAVA基于J2ME的手机游戏开发免费
- 2020高压电工考试及高压电工复审模拟考试
- matlab 三维 作图 坐标轴_这张图(不全),想利用matlab画一张三维图,X Y z 轴分别为经度 纬度 频率,这...
- 【解决步骤】TortoiseGitPlink Fatal Error:No supported authentication methods available (server sent: publi
- 手把手教你用 Python 爬虫煎蛋妹纸海量图片
- pads layout“生成泪滴”
- 基于 USB PD DRP的充电宝原理解析
- C/C++——老夫记不住
- Linux虚拟机与主机共享文档
- AttributeError: module ‘torch.distributed‘ has no attribute ‘_all_gather_base‘
- 服务器的操作系统和数据库关系,数据库、数据库管理系统和SQL之间的关系
- 2022道路运输企业主要负责人考试练习题及在线模拟考试
- #sora#笔记——工作流
热门文章
- C# 操作office知识点汇总
- 【mark】linux 终端命令行下的快捷键(自己已验证所有)
- entity framework学习笔记
- 前华远房地产任大炮任志强:我一定不要清华的毕业生
- 1/2 pymysql:Python连接MySQL数据库
- Centos Flex 2.6.4
- 《Netty权威指南》
- cv2.minAreaRect() 生成最小外接矩形
- Azkaban使用简单笔记
- 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)