剃刀语法 - foreach循环

Ian*_*vis 63 razor

@foreach (string s in "1,2,3".Split(',')) {
  s is equal to @s<br/>
}
Run Code Online (Sandbox Code Playgroud)

我想吐出:s等于1 s等于2 s等于3

但是我遇到了各种各样的错误,因为Visual Studio认为{}之间的代码是代码,但我希望它是标记.

Dom*_*nic 108

今天早上在ScottGu的博客上看到了这一点:@:在该行之前使用:

@foreach (string s in "1,2,3".Split(',')) {
  @: s is equal to @s<br/>
}
Run Code Online (Sandbox Code Playgroud)

或者,使用<text />标签:

@foreach (string s in "1,2,3".Split(',')) {
  <text>s is equal to @s<br/></text>
}
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 18

斯科特格思里今天早上才回答.
将其更改为

@foreach (string s in "1,2,3".Split(',')) {
  @: s is equal to @s<br/>
}
Run Code Online (Sandbox Code Playgroud)


Pha*_*bus 5

@foreach (string s in "1,2,3".Split(',')) {
  <text>s is equal to </text>@s<br/>
}
Run Code Online (Sandbox Code Playgroud)

我认为这是因为你正在解析括号之外的文本,所以Razor认为它是代码,尝试使用上面的剃刀文本标签,这解析与@完全相同:但是(至少对我来说)更直观(它不会解析标签)