Razor 视图引擎的特点:
- 简洁、富于表现、流畅
尽量减少页面代码的输入,实现快速流畅的编程工作
不必明确为服务器代码标记起始与结束符,Razor 能智能判断,这样让页面看清洁,代码方便阅读
aspx代码
<ul> <% foreach(var str in list ){ %> <li> <%=str %> </li> <% } %> </ul>
Razor代码
<ul> @foreach (var str in list) { <li>@str</li> } </ul>
- 易于学习
对于有过WEB开发经验的人来说, 能快速学会,就几个需要注意的点
- 支持单元测试
Razor的基本语法
伟大的@标记
@标记是Razor的根本,服务器端代码段都以@开始
代码块
@{ var i = 100; var str = "Holle world!"; }
HTML编码
@输入都是经过编码的,如果不需要编码,需要使用@Html.Raw(str)
代码与纯文本混合
方式一、用<text>输出的文本内容</text>
@for (int i = 0; i < 10; i++)
{
<text>Holle world</text>
}
方式二、使用 @: 输出
@for (int i = 0; i < 10; i++)
{
@:Holle world
}
表达式与文本混合
Holle @FirstName . @LastName .
EMAIL地址
151279853@qq.com
Razor可以自动认别Email地址,而不会做服务器代码执行
输出@符号
当页面需要输出@符号时,连续两次@@ 这样输出,与C#的转义字符类似。
显示输出
当@与前面的文本之间无空间时,需要使用()号输入,如 <text> Hello@(UserName) </text>(<text>标记其实是为了让Razor把<text>当HTML标签处理,但不输出)
服务器断注释
@*
This is server side
This is server side
*@
Razor创建委托
Razor创建委托是为以复用视图逻辑
@{ Func<dynamic, object> b = @<strong>@item</strong>; } @b("这样会给字体加粗!")
内容中混合代码
<ul> @foreach (var str in list) { <li> @if (isTrue) { @: isTrue 为 @isTrue } else { @:(isTrue 为 @isTrue) } </li> } </ul>
多行内容混合代码
当多行内容在HTML闭合的标签中时,可以直接使用@
@if (isTrue) { <p> 现在时间<br /> 现在时间是:@DateTime.Now<br /> 现在时间<br /> </p> }
当多行内容不在HTML闭合标签中时,需要使用行输出标记@: 或 <text></text>标记
@if (isTrue) { @:现在时间<br /> @:现在时间是:@DateTime.Now<br /> @:现在时间<br /> } @if (isTrue) { <text> 现在时间<br /> 现在时间是:@DateTime.Now<br /> 现在时间<br /> </text> }