Ответ 1
Razor не нравится, когда вы разделяете начальные и конечные теги вверх так, чтобы он не мог правильно разобрать HTML-код, поэтому вам нужно избегать их как обычный текст:
@if(isNew)
{
@:<div class="new">
}
...
@if(isNew)
{
@:</div>
}
Более традиционный подход состоял бы в повторении разметки внутри div (с использованием частичных или других) - какой подход более желателен, я бы сказал, зависит от характера разметки между условными разделителями:
@if(isNew)
{
<div class="new">
<!-- some markup or partial view -->
</div>
}
else
{
<!-- some markup or partial view -->
}
Я бы предпочел этот подход, если:
- Содержащаяся разметка может быть с пользой содержаться в частичном, чтобы ее можно было повторно использовать в другом месте.
- Разметка условной упаковки больше, чем несколько строк, в результате чего разметка становится беспорядочной.
Я также должен добавить опцию использования вспомогательных методов:
@helper MainMarkup()
{
<!-- some markup or partial view -->
}
@if(isNew)
{
<div class="new">
@MainMarkup()
</div>
}
else
{
@MainMarkup()
}
Это полезно, если вы хотите использовать второй вариант выше, но не повторяйте разметку или вложение слишком большого количества частичных (особенно если эта разметка применима только для этого представления).