MVC3 Razor: отображение HTML в блоках кода

131

В моих файлах cshtml у меня много блоков с такими вещами:

@if(Model.foo)
{
    <span>Hello World</span>
}

Единственная причина, по которой существует диапазон, заключается в том, что я не могу найти другого способа заставить его распознавать, что «Hello World» является частью html, если я не заключу его в теги html. Есть ли хороший способ избежать кода, который не включает добавление бессмысленных тегов на дисплей?

DMulligan
источник

Ответы:

226

Вы можете использовать @:для побега:

@if(Model.foo)
{
    @:Hello World
}

или специальный <text>тег, который не выводится в ответе:

@if(Model.foo)
{
    <text>Hello World</text>
}
Дарин димитров
источник
14
@if(Model.foo)
{
  @:Hello World
}
Сергей Метлов
источник
10

Вы можете добавить текст, как показано ниже:

@if(Model.foo)
{
    @:Hello World
}

когда вы используете @бритву, переключите ее в режим блока кода. Следовательно, вам необходимо указать текст, как указано выше.

matmat
источник
8
<text>Explicit HTML<text>

@(Explicit C#)
Кэтэлин Рэдой
источник
8

многие разработчики предоставили много способов выше .. вот еще один, который отлично работает в MVC 4 .. Я надеюсь, что он будет работать и для MVC 3.

@if(Model.foo)
{
    @Html.Label("Hello World")
}
NMathur
источник
0

Приведенные выше ответы великолепны. Я собираюсь включить ссылку на статью Скотта Гатри по этому поводу, так как она показывает еще несколько примеров и объяснений.

https://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax

@if (p.UnitsInStock == 0 {
  <text>
    Donec in ante vitae purus consequat laoreet ut elementum
    purus. Ut ut tempus nulla, quis ultrices est. Integer
    pharetra ante in lectus porta, a lacinia ex faucibus. 
    Aliquam magna risus, pretium vel neque at, laoreet 
    ultrices lectus. Morbi posuere luctus risus. Nullam 
    tincidunt massa egestas nunc tempor scelerisque.  
  </text>
}


@if (p.UnitsInStock == 0 {
  @: Line 1
  @: Line 2
  @: Line 3
}

Эрик Бурдо
источник