欢迎光临

木子屋

标题: ASP.NET MVC3 Razor视图引擎基本语法学习小结

作者: dnawo

日期: 2012-08-13 10:45 AM

分类: Web编程

内容: 在学习Razor视图引擎基本语法过程中，我习惯拿ASPX视图引擎基本语法来比较，这样能更快的掌握Razor。先来看一个简单的ASPX例子：
复制内容到剪贴板 程序代码<%
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)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.819 ms

返回

标题: ASP.NET MVC3 Razor视图引擎基本语法学习小结

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.819 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.851 ms

返回