razor语法-foreach循环 @foreach(字符串s在“1,2,3”中)。拆分(',')){ s等于@s }

razor语法-foreach循环 @foreach(字符串s在“1,2,3”中)。拆分(',')){ s等于@s },razor,Razor,我想说: s等于1 s等于2 s等于3 但是我遇到了各种各样的错误,因为Visual Studio认为{}之间的是代码,但我希望它是标记。刚刚看到:在那一行之前使用@:: @foreach (string s in "1,2,3".Split(',')) { s is equal to @s<br/> } @foreach (string s in "1,2,3".Split(',')) { <text>s is equal to @s<br/>&l

我想说: s等于1 s等于2 s等于3

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

刚刚看到:在那一行之前使用
@:

@foreach (string s in "1,2,3".Split(',')) {
  s is equal to @s<br/>
}
@foreach (string s in "1,2,3".Split(',')) {
  <text>s is equal to @s<br/></text>
}
@foreach(字符串s在“1,2,3”中)。拆分(',')){
@:s等于@s
}
或者,使用
标记:

@foreach (string s in "1,2,3".Split(',')) {
  @: s is equal to @s<br/>
}
@foreach(字符串s在“1,2,3”中)。拆分(',')){
s等于@s
}

换成

@foreach(字符串s在“1,2,3”中)。拆分(',')){
@:s等于@s
}
@foreach(字符串s在“1,2,3”中)。拆分(',')){
s等于@s
}
我认为这是因为你在括号外解析文本,所以Razor认为它是代码,尝试使用上面的Razor文本标记,它解析的内容与@:完全相同,但(至少对我来说)更直观(它不会解析标记)

适合多行。
@foreach (string s in "1,2,3".Split(',')) {
  @: s is equal to @s<br/>
}
@foreach (string s in "1,2,3".Split(',')) {
  <text>s is equal to </text>@s<br/>
}