0

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?是不是这段代码也在代码块里面?谢谢你,史密斯

4

1 回答 1

2

@ 符号是 Razor 语法的核心,是 Razor 用来区分代码和标记的字符。@ 符号标志着开发人员打算从标记切换到代码的点。在简单的情况下,不需要额外的字符来指示代码何时停止而标记何时恢复。Razor 的智能解析器确定模板的哪些部分是代码,哪些是标记。什么是有效的代码语句?Razor 使用以下算法在读取 @ 符号触发器后查找代码语句的结尾:

  1. 读取到有效标识符(即 C# 或 VB 关键字)或变量名的末尾。
  2. 如果下一个字符是左括号( ( 或 [ )...</p>

    一个。继续解析,直到找到相应的右括号。嵌套的括号也被跟踪以避免块的过早关闭。

    湾。循环回到#2。

  3. 如果下一个字符是 . (句点)并在有效标识符之前,跳转到#1。
  4. 完成代码语句并继续处理标记的其余部分。

@person 存在的原因是告诉 Razor 视图引擎它们是标记和代码之间的转换

于 2012-12-04T23:44:08.177 回答