http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvc3razor.aspx
在上面的链接...... ..
代码块Foreach
@{
<h3>Team Members</h3> string[] teamMembers = {"Matt", "Joanne", "Robert", "Nancy"};
foreach (var person in teamMembers)
{
<p>@person</p>
}
}
为什么h3标签“团队成员”没有抛出未声明的C#错误?这是在代码块内部,它表示它是一个C#代码。 代码块中是否会忽略所有HTML标记?
同样,为什么@签到@person?是不是这个代码也在代码块内? 谢谢, 史密斯
答案 0 :(得分:2)
@符号是Razor语法的核心,Razor用来区分代码和标记的字符。 @符号表示开发人员打算从标记切换到代码的点。在简单的情况下,不需要其他字符来指示代码何时停止并且标记恢复。 Razor的智能解析器确定模板的哪些部分是代码,哪些是标记。什么是有效的代码声明? Razor在读取@符号触发器时使用以下算法查找代码语句的结尾:
如果下一个字符是左括号((或[] ...
)一个。继续解析,直到找到相应的右括号。嵌套括号 也被跟踪以避免过早关闭一个区块。
湾循环回#2。
@person的原因是告诉Razor视图引擎它们是标记和代码之间的转换