Недавно я обновил проект от MVC 1 до MVC 3, и теперь я пытаюсь использовать Razor.
В одном представлении у меня есть блок кода foreach, но вложенный оператор if, похоже, не хочет @перед ним.
Мой исходный код:
@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>
}
}
Я получаю ошибку времени выполнения с @if, которая гласит: Неожиданное ключевое слово "if" после символа "@". Как только внутри кода вам не нужны префиксные конструкции, такие как "if" с "@".
Если я удалю @, код работает нормально. Я ожидал, что вам нужно @из-за HTML, непосредственно предшествующего ему. Что меня больше смущает, так это то, что мне нужно @перед вложенным foreach. Какие правила здесь играют?