Question sur le code imbriqué bloc de déclarations de Rasoir
J'ai récemment mis à jour un projet de MVC 1 à MVC 3 et maintenant je suis en train de Rasoir.
Dans un point de Vue, j'ai un foreach bloc de code, mais le imbriquée si l'instruction ne semble pas vouloir le @ devant elle.
Mon code d'origine était:
@foreach(var r in Model.Results)
{
string css = r.Result.Count() > 0 ? "fail" : "pass";
<p class="@css"><strong>@r.Description</strong></p>
@if(r.Result.Count() > 0)
{
<p>Count: @r.Result.Count()</p>
<table>
<thead>
<tr>
<th>ID</th><th>Title</th><th>Description</th>
</tr>
</thead>
<tbody>
@foreach(var e in r.Result) {
<tr><td>@e.Id</td><td>@e.Title</td><td>@e.Description</td></tr>
}
</tbody>
</table>
}
}
Je vais obtenir une erreur d'exécution avec @si qui dit: Des "si" mot-clé après le caractère"@". Une fois à l'intérieur du code, vous n'avez pas besoin de préfixe des constructions comme les "si" par "@".
Si je supprime le @ le code fonctionne très bien. J'ai besoin de l' @ en raison de l'HTML qui précède. Ce qui me confond plus, c'est que je n'ai besoin de l' @ avant le foreach imbriquée. Quelles sont les règles en jeu ici?
OriginalL'auteur Mattio | 2011-05-23
Vous devez vous connecter pour publier un commentaire.
Imbriquée
foreach
est à l'intérieur de HTML (ce qui arrive à être à l'intérieur d'un autre code).Pour aller de balisage de code, vous avez besoin d'un
@
.C'est seulement inutile, quand directement imbrication des blocs de code.
OriginalL'auteur SLaks
À l'intérieur de parenthèses dans le rasoir, il s'attend à un correspondant de début et de fin de balise de fin. C'est comment l'analyseur fonctionne.
Jusqu'à présent exemple, le suivant est valide:
Et ce n'est pas:
Pour contourner ce problème, vous pouvez le placer à l'intérieur d'un
<text>
bloc:Donc dans votre cas, il serait devenu:
Découvrez... weblogs.asp.net/scottgu/...
OriginalL'auteur lancscoder