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?

questionAnswers(2)

yourAnswerToTheQuestion