С RazorViewEngine я могу сделать это:
if (somecondition) {
<div> some stuff </div>
}
но я не могу этого сделать (Razor путается):
if (somecondition) {
<div>
}
if (someothercondition) {
</div>
}
У меня есть ситуация, когда мне нужно поместить свои открывающие и закрывающие html-теги в разные блоки кода - как я могу сделать это в Razor?
asp.net-mvc-3
razor
Сидней
источник
источник
<text><div></text>
- haacked.com/archive/2011/01/06/…<text><div></text>
работает, но<text></div></text>
не работает.Чтобы объяснить ответ Дарина, то есть префикс HTML следующим образом:
@: в Razor означает «визуализировать что-либо как простой текст»
или вы можете использовать это, которое выводит HTML в том виде, в каком вы его изначально написали (это также можно использовать, чтобы избежать автоматической кодировки HTML, которую делает Razor, если вы пытаетесь вывести HTML):
(Ссылка Html.Raw из MS - http://msdn.microsoft.com/en-us/library/gg568896(v=vs.111).aspx )
источник
@:<a href="@link" class="@classNames">@text</a>
@Html.Raw()
- см. Соответствующий пост SOВы можете создать собственный метод MVC Helper. Для этого вы создаете общедоступный статический класс MyRenderHelpers в пространстве имен
System.Web.Mvc.Html
и напишите метод Html.Теперь вы можете использовать этот метод расширения в своем представлении бритвы:
источник
Тот факт, что вам нужно это сделать, обычно указывает на то, что код вашего представления неправильно разложен. Природа HTML состоит в том, чтобы иметь сбалансированные или замкнутые теги (по крайней мере, в HTML 4, HTML 5, похоже, отходит от него), и Razor зависит от этого предположения. Если вы собираетесь выдавать условно,
<div>
то вы также будете где-то позже вывести</div>
. Просто укажите целую пару в своемif
заявлении:В противном случае вы получите странный код, как здесь .
источник
@:
или<text></text>
if (somecondition) { @:</div> }
<link>
теги.