ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(支持/加强现有的.aspx视图引擎外)。当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速、通畅的编码工作流。
  与大部分模板的语法不同,在Razor的帮助下,您不需要中断代码编写,仅仅为了在HTML中标注服务器端代码块的开始和结束。代码分析器能够从你的代码里推断出是否为服务器端代码。这种更加简洁、富有表现力的语法更加干净,输入也更快速,有趣。

 

         尽管目前还存在一定性能上面的问题,但一直不喜欢WebForm标签式写法的人已经看到了福音。

 

          Razor在减少代码冗余、增强代码可读性和vs 智能感知方面,都有着突出的优势。

它实际上分为三个独立的组件:

理解基础HTML语法的标记解析器;

理解基础C#或者VB语法的代码解析器;

理解标记和代码如何混合的中央控制器

 

 

Razor解析器有三个参与者:代码解析器,标记解析器,中央控制器。三个组件相互配合,协同工作完成对Razor文档的解析。

Razor解析器有三种状态,分别是:解析标记文档、解析标记块,解析代码块,任何情况下解析器都处在以上三种状态中的一种状态上。前两种状态由标记解析器来处理,最后一种状态由代码解析器处理。

 

目前的功能:基本的@语法,layout使用,asp.net的动态编译,支持名称引用,支持复杂程序集。

Razor是MVC3中的一个视图模板引擎,所以,我们只需要在VS2010中安装一个MVC3的工具,就可以使用Razor了。

  

                       

安装以后的效果

Razor的文件类型

  Razor支持两种文件类型,分别是.cshtml 和.vbhtml,其中.cshtml 的服务器代

码使用了c#的语法,.vbhtml 的服务器代码使用了vb.net的语法。

  由此也可以看出,Razor其实是一种服务器代码和HTML代码混写的代码模

板,类似于没有后置代码的.aspx文件

@字符是Razor中的一个重要符号,它被定义为Razor服务器代码块的开始符号

@{string productName = "台灯";}
<span>@productName</span>
<span>@DateTime.Now.ToString("yyyy-MM-hh")</span>

@符号标记了一个HTML代码的输出,在其后的变量、方法返回值和表达式运算结果会进行输出。

@(code)可以输出一个表达式的运算结果

@{
int num1 = 10;
int num2 = 5;

int sum = num1 + num2;
@(num1 +num2);
}

在@{}中的单行输出

@{

@:This is some text

@:This is text too

 @:@i也可输出变量

}

也可以使用标签

@{

<p>This is some text  </p>

}

输出@符号:@@

输出Email地址:Razor模板会自动识别出Email地址,所以不需要我们进行任何的转换。而在代码块中,只需要使用 @:Tom@gmail.com 即可。@:表示后面的内容为文本。

输出HTML代码(包含标签):直接输出,string html = "<font color='red'>文本</font>"; @html

输出HTML内容(不包含标签):有两种方法,第一种:IHtmlString html=new HtmlString("<font color='red'>文本</font>"); @html; 第二种:string html = "<font color='red'>文本</font>"; @Html.Raw(html);

 这里所说的注释是指服务器端的注释,在Razor代码块中,可以使用C#的注释方式来进行注释,分别是//:(单行注释)和/**/(多行注释)。

  另外,Razor还提供了一种新的服务器段代码注释,可以即注释C#代码,同时可以注释HTML代码,@**@,这种注释方式不受代码块的限制,在Razor代码中的任何位置都额可以

@*
这是一个注释
<b>这个是注释</b>
*@

    <text>标签是一个 Razor 特殊处理的元素。Razor将<text>块的内部内容视为内容块,不呈现包含那些内容的<text>标签(这意味着只呈现<text>内部内容,不呈现标签本身)。这使呈现没有被HTML元素包装的多行内容块变得方便。

@{

 <text>

 tomorrow is good some

 girl is nice

 </text>

}

为了能表达清楚, 很多地方接了别人的文章。

相关文章: