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>
}
为了能表达清楚, 很多地方接了别人的文章。