走进ASP.NET MVC 3.0中的Razor模板引擎

开发 后端
今天我们要讨论的是ASP.NET MVC 3.0中的Razor模板引擎,与大家分享关于Razor的一些感受。

随着MVC3.0RTM版本的发布,最近将公司的项目从MVC2.0升级到MVC3.0。同时打算在MVC3中全面使用Razor模板引擎。现将Razor学习拿出来和大家分享,如果存在不足的地方欢迎您指出。

其实在使用<%= %>在html中调用C#代码时,内心总在埋怨。这个写法非常麻烦。麻烦在哪呢?其实就是闭合。比如:

Asp.net: <script src="<%=Url.Content("~/Scripts/jquery-1.4.4.min.js")%>"

Razor:   <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" 

非常明显,Razor在内部帮我们做了闭合“%>”。其实就是这个小小的闭合让我们可以在html内更加“流畅”的调用服务端代码。故Razor给开发带来了一定的便捷!下面介绍Razor的基本用法。

一、模板页

Razor出现后我们就可以选择不再使用asp.net master 模板页。取而代之的是cshtml razor的模板文件。用法个人认为还是和master模板页类似。但在mater模板页的原有功能上有了进一步扩展,更方便开发。比如只要在View文件夹内加入_ViewStart.cshtml文件,我们就无需在每一个具体的View页面引入模板页。减少View页面内的重复代码。具体的可以建立一个MVC3 Application 选择razor模板,VS会自动建立上述机制。这里值得提出的是@RenderSection方法。可以让我们在模板页预设一个区域,未来给继承该模板页的View使用。具体请看以下操作:

在MVC3.0 shared文件夹下_Layout.cshtml这个模板文件内加入以下代码:

  1. <!DOCTYPE html>   
  2.  <html>   
  3.  <head>   
  4.    <title>@ViewBag.Title</title>   
  5.   <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />   
  6.    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>   
  7.   @RenderSection("Head", required: true)   
  8.  </head>   
  9.  <body>   
  10.   <div class="page">  

以上代码第7行,预留出一个Head的section。 熟悉模板页的人,应该明白该处是预留是给未来具体的View页面自定义特定js/css使用的。这个View我们就用默认的Home底下的Index来举例。打开index.cshtml 写入以下代码

  1. @{   
  2.    ViewBag.Title = "Home Page";   
  3. }   
  4. h2>@ViewBag.Message</h2>   
  5. @section Head{   
  6.    <script type="text/javascript">   
  7.     $(function () {   
  8.         alert("hello jquery");   
  9.      });   
  10.    </script>   
  11. }  

该View已经集成了模板页,这里只是填充模板页内的Head section这时就可以加入我们的针对每个view页面的js或者CSS了。至此达到共性外的个性。

二、Razor语法:

文章开头就已经提到了,个人认为Razor语法的便捷在于razor自动帮助我们闭合C#或VB.NET在html的语法。请看以下代码:

已经给出注释了,仔细阅读并不难理解。您应该也能体会到如果将razor换成asp.net的<%= %>或者<%: %>写法,其实是很“痛苦”的。至于razor的其他用法官方网站已经写的很全面了,比如razor的已经为我们 HTML Encod防止XSS攻击、html中字符串中出现×××@×××.com这样的文本,Razor是可以自动识别成Email格式而不是Razor的关键字。

三、 Razor 语法智能提示:

该智能提示与VS内的一样,只需Ctrol + J 即可调出。具体的请看下图

您是否和我一样也打算在Web开发中全面使用Razor呢?

原文链接:http://www.cnblogs.com/ryanding/archive/2011/01/19/1938690.html

【编辑推荐】

  1. 详解ASP.NET MVC 3 beta新特性
  2. ASP.NET MVC 3让依赖注入实现得更简单
  3. 详解ASP.NET MVC 3 beta新特性
  4. ASP.NET MVC 3新特性与NuPack功能详解
  5. .NET开发人员应该关注的七个开源项目
     
责任编辑:彭凡 来源: 博客园
相关推荐

2010-12-07 09:38:15

ASP.NET MVC

2012-06-26 10:24:51

Asp.Net框架Razor

2021-06-22 16:59:56

微软.NETC# 软件开发

2009-10-09 10:52:43

ASP.NET模板引擎

2009-07-22 13:16:04

MvcAjaxPaneASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2014-06-30 15:10:32

2009-10-29 09:15:32

ASP.NET MVCDropDownLis

2009-04-08 09:58:07

ASP.NET MVCTempData框架

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-20 15:44:32

ASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2011-09-22 10:58:56

ASP.NET

2009-03-06 10:28:30

MVCASP.NET异步Action
点赞
收藏

51CTO技术栈公众号