Pergunta sobre declarações de bloco de código aninhado no Razor
ecentemente, atualizei um projeto do MVC 1 para o MVC 3 e agora estou testando o Razo
Em um modo de exibição, tenho um bloco de código foreach, mas a instrução if aninhada parece não querer o @ na frente del
O meu código original era:
@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>
}
}
Receberei um erro de tempo de execução com @if que diz: Palavra-chave "se" inesperada após o caractere "@". Uma vez dentro do código, você não precisa prefixar construções como "if" com "@".
Se eu remover o @, o código funcionará bem. Eu esperava precisar do @ por causa do HTML imediatamente anterior. O que mais me confunde é que eu preciso do @ antes do foreach aninhado. Quais são as regras em jogo aqui?