<%
int i = 100;
string str = "mzwu.com";
%>
i=<% =i %>, str=<% =str %>转换为Razor:
@{
int i = 100;
string str = "mzwu.com";
}
i=@i,str=@str可见,Razor用@代替了<%和%>,在输出单个变量值时,显得更简单。
再来看一个ASPX的例子:
<%for (int counter = 0; counter < 10; counter++){%>
<span>number = <% =counter %>;</span>
<%}%>转换为Razor:
@for (int counter = 0; counter < 10; counter++)
{
<span>number = @counter;</span>
}从例子中可以看出,Razor比ASPX输的代码量少了,并且更智能,能自动分辨出C#代码和html。
独特的<text>标签
在第二个例子中,<span>标签没多大用处,我们它去掉吧:
@for (int counter = 0; counter < 10; counter++)
{
number = @counter;
}
为什么会出错?原因是去掉<span>后,智能的Razor将这行理解成是一个C#语句,所以提示上下文中没有声明number变量。怎么解决呢?<text>出场了:
@for (int counter = 0; counter < 10; counter++)
{
<text>number = @counter;</text>
}这感觉<text>和<span>作用一样,有什么区别吗?<text>是Razor新增的一个独特的标签,它用来标识一个文本区块,并且它不会在客户端显示出来,它还有一种简写方法:
@for (int counter = 0; counter < 10; counter++)
{
@:number = @counter;
}@转义
@在Razor视图引擎中如此重要,如果要在WEB页面中输出一个Email地址怎么办呢?不用太担心,大部分情况下Razor会智能的区分:
× wemaster@mzwu.com
× 123@456
√ number=@counter
√ number @counter
只要@前边不是空格和其他符号,Razor都会将它直接显示出来。
这终究让人不太放心,总有不小心加了空格的时候,程序就得出错了,显然微软考虑到了这个问题,可连续输入两个@进行转义保证可万无一失:
wemaster @@mzwu.com
还有问题,再看一个例子,生成10个用户名:
@for (int counter = 0; counter < 10; counter++)
{
<text>user@counter;</text>
}按上边说的,这边@不会解析,但我们是希望Razor去解析它,怎么办呢?这时用中括号来解决就可以了:
@for (int counter = 0; counter < 10; counter++)
{
<text>user@(counter);</text>
}
评论(0)
暂无评论。