Синтаксис бритвы - петля foreach

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

Я хочу выплюнуть: s равно 1 s равно 2 s равно 3

Но я получаю всевозможные ошибки, потому что Visual Studio думает, что между кодом {} есть код, но я хочу, чтобы он был разметкой.

Ответ 1

Просто увидел это в блоге ScottGu этим утром: используйте @: перед этой строкой:

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

В качестве альтернативы используйте тег <text />:

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

Ответ 3

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

Я думаю, что это потому, что вы разбираете текст вне скобок, поэтому Razor думает, что это код, попробуйте использовать тег бритвы выше, это анализирует точно так же, как @: но (для меня как минимум) немного больше интуитивно понятный (он не будет анализировать теги)