ASP.NET MVC 3 直到我膝盖中了一箭【3】Razor视图引擎
“Razor”是一个非常好的新的视图引擎,它提供了流畅的专注于代码的模版方案。它的编码工作流快速、富有表现力并有趣。语法简练并节省按键次数,同时还提升了代码的可读性。ASP.NET的ASPX标记语法使用”<%= %>”或”<%: %>”来标记“代码碎块”,每一个代码碎块都需要5个字符来标明代码的开始和结束位置。在Razor视图引擎中,你只需要用一个”@”字符就可以标识代码块的开始,与”<% %>”代码碎块不一样,Razor不需要你显式指明代码块的结束位置。
1.注释
1 @*我是注释1*@
2 <!--我是注释2-->
3 @{
4 //我是注释3
5 }
2.执行C#语句
1 <b>执行C#语句:</b>
2 @DateTime.Now.Date.ToShortDateString()
3.执行C#代码块
1 <b>执行C#代码块:</b>
2 @*支持C#语法:注意“;”*@
3 @{
4 List<string> list = new List<string>() { "MVC3", "Razor" };
5 list.Add(".Net4");
6 list.Add("");
7 }
8 @* 支持逻辑关键字如foreach if else等*@
9 @foreach (string s in list)
10 {
11 if (string.IsNullOrEmpty(s))
12 {
13 <li>空</li>
14 }
15 else
16 {
17 <li>@s</li>
18 }
19 }
20 @* 文字输出 变量输出*@
21 @{
22 @:@list[0]
23 @:list[0]
24 }
4.使用html标记输出变量、文本
5.@{...}内部使用@:进行单行输出变量、文本,否则报错。
6.Email和@符号
大部分情况下,Razor解析器都有足够的能力推导出模板里的一个“@”字符到底是在代码中用到,还是在静态文本内容中用到。Razor会分析”@”字符右边的内容来判断它到底是代码还是静态文本内容(电子邮件被当作静态内容输出)。
1 @{
2 //输出@
3 @:@
4 //输出@
5 @:@@
6 //自动识别email输出lhp0704@163.com
7 @:lhp0704@163.com
8 }
7.@Url.Content
将虚拟(相对)路径转换为应用程序绝对路径。如果指定的内容路径不以否定号 (~) 字符开头,此方法将返回没有改变的 contentPath。
1 <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
2 <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
8.@RenderSection()
可以有选择性地定义几个不同的“节”,允许基于这个版面设计的视图模板通过“填入”自定义的内容来覆写它。这就允许你在视图中覆写版面设计页里不连续的内容段落,从而使你的站点版面设计更有弹性。
false表示具体页面可以不实现section Head。
1 @*使用@RenderSection方法预设一个区域,未来给继承该页的View使用*@
2 @RenderSection("Head", required: false)
1 @section Head{
2 <script type="text/javascript">
3 $(function () {
4 alert("Hello World");
5 });
6 </script>
9.@RenderBody()
使用“RenderBody()”的辅助函数,放在模板中需要根据所请求的URL而“填入”具体内容的地方。
~/Views/Shared/下_Layout.cshtml
1 <div>
2 开始
3 @RenderBody()
4 结束
5 </div>
~/Views/Home/下Index.cshtml
1 @{
2 ViewBag.Title = "主页";
3 }
4 <p>
5 将内容放置在此处@RenderBody()。
6 </p>
10.@RenderPage()
~/Views/Shared/下_Layout.cshtml
1 <div>
2 开始
3 @RenderBody()
4 结束
5 <br />
6 开始
7 @*可以多次使用*@
8 @RenderPage("~/Views/Home/About.cshtml")
9 结束
10 </div>
~/Views/Home/下About.cshtml
1 @{
2 ViewBag.Title = "关于我们";
3 }
4 <p>
5 将内容放置在此处。
6 </p>
11.数据传递
ViewData获取或设置一个字典,其中包含在控制器和视图之间传递的数据。
ViewBag获取视图包。
TempData获取要传递到视图的临时数据。
~/Views/Home/下Index.cshtml
1 @{
2 ViewBag.Title = "主页";
3 }
4 <p>
5 将内容放置在此处@RenderBody()。
6 </p>
~/Controllers/下HomeController.cs
1 public ActionResult Index()
2 {
3 ViewBag.Message = "欢迎使用 ASP.NET MVC!";
4 ViewData["Name1"] = "Razor视图引擎1";
5 TempData["Name2"] = "Razor视图引擎2";
6 return View();
7 }
~/Views/Shared/下_Layout.cshtml
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>@ViewBag.Title</title>
6 </head>
7 <body>
8 <div>
9 @RenderBody()
10 @ViewBag.Message<br />
11 @ViewData["Name1"]<br />
12 @TempData["Name2"]
13 </div>
14 </body>
15 </html>

最近更新
随机推荐
- 腾讯携程“绯闻”背后:在线旅游潜在
- 六大措施保障GoDaddy账户安全
- 诺基亚安卓手机清晰用户界面谍照曝光
- 多家网贷平台资金被冻结:网贷为何成
- phpMydmin的GetShell思路
- 携程网实体店落子北京 或掀OTA实体店
- 虾米网上线音乐人平台 承诺两年内不参
- Netflix和亚马逊同时开拓印度市场 策
- 微软计划发布4款危急补丁 涉及Window
- Opera发布浏览器补丁修复3个漏洞 其中
- YouTube模仿者优酷土豆的尴尬:上市四
- 2019年口碑好的理财平台推荐:陆金所
- 互联网将迎黑色星期一 病毒攻击最猖獗
- 互联网《自律公约》发布 行业退出机制
- 巴西最大银行遭遇DNS缓存中毒攻击
- LG趣拍得再添新品 韩国迷你照片打印机
- 秦火火等网络推手被拘 伙同“意见领袖
- 泄露用户信息?这是最后一次否?
- 苹果系统安全更新解决Safari RSS漏洞
- 阿里失策了?去哪儿启用域名qua.com推