Использование блока кода Razor

Я только начинаю работать с веб-страницами и не могу понять, почему блок кода не работает. Мне нужно условно отобразить WebGrid. До того, как я начал, у меня есть это:

<div>
@grid.GetHtml()
</div>

Теперь я пытаюсь вставить оператор if:

<div>
  @if (condition) { grid.GetHtml(); }
</div>

Это приводит к тому, что сетка html не отображается. На самом деле даже без оператора if и только с блоком кода я не получаю html:

<div>
  @{ grid.GetHtml(); }
</div>

К сожалению, я запускаю WebMatrix, поэтому не могу отлаживать, но кажется, что всякий раз, когда я использую блоки кода, операторы не выполняются.


person Neil Dobson    schedule 14.01.2013    source источник
comment
Хорошо, кажется, мне нужно использовать другой символ @ для вывода HTML: @if (condition) { @grid.GetHtml() }   -  person Neil Dobson    schedule 14.01.2013


Ответы (1)


Для однострочных операторов вы должны использовать знак @ вместо того, чтобы помещать его в блок кода. Если вы все же поместите его в блок кода (в некоторых случаях вам нужно), он не отобразит вашу сетку, просто вызвав grid.GetHtml(); Вот почему используется знак @, он означает, что вы хотите записать какое-то значение, но вы должны использовать это, только если вы пишете код HTML. При использовании блока кода вы должны указать серверу, что это значение должно быть записано, например:

@{
this.Write(grid.GetHtml());
}
person PeterInvincible    schedule 12.02.2013