Razor 视图引擎的特点:
- 简洁、富于表现、流畅
尽量减少页面代码的输入,实现快速流畅的编程工作
不必明确为服务器代码标记起始与结束符,Razor 能智能判断,这样让页面看清洁,代码方便阅读
aspx代码
- <% foreach(var str in list ){ %>
- <%=str %> <% } %>
Razor代码
- @foreach (var str in list) {
- @str }
- 易于学习
对于有过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创建委托是为以复用视图逻辑
@{ Funcb = @ @item; }@b("这样会给字体加粗!")
内容中混合代码
- @foreach (var str in list) {
- @if (isTrue) { @: isTrue 为 @isTrue } else { @:(isTrue 为 @isTrue) } }
多行内容混合代码
当多行内容在HTML闭合的标签中时,可以直接使用@
@if (isTrue){现在时间
现在时间是:@DateTime.Now 现在时间 }
当多行内容不在HTML闭合标签中时,需要使用行输出标记@: 或 <text></text>标记
@if (isTrue){ @:现在时间 @:现在时间是:@DateTime.Now @:现在时间 }@if (isTrue){现在时间 现在时间是:@DateTime.Now 现在时间 }