web-dev-qa-db-fra.com

syntaxe de rasoir - boucle foreach

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

Je veux cracher: s est égal à 1 s est égal à 2 s est égal à 3

Mais je reçois toutes sortes d'erreurs parce que Visual Studio pense que ce qui est entre les {} est du code, mais je veux que ce soit du balisage.

63
Ian Davis

Je viens de voir cela sur le blog de ScottGu ce matin : utilisez @: avant cette ligne:

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

Vous pouvez également utiliser le <text /> tag:

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

Scott Guthrie vient de répondre à cette question ce matin .
Remplacez-le par

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

Je pense que c'est parce que vous analysez du texte en dehors des crochets, donc Razor pense que c'est du code, essayez d'utiliser la balise de texte de rasoir ci-dessus, cela analyse exactement la même chose que @: mais (pour moi au moins) est un peu plus intuitif (il ne pas analyser les balises)

5
Pharabus