MVC3 Razor: exibindo html dentro de blocos de código


131

Nos meus arquivos cshtml, tenho muitos blocos com coisas assim:

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

A única razão pela qual a extensão existe é porque não consigo encontrar outra maneira de forçá-lo a reconhecer que "Hello World" faz parte do html, a menos que eu o envolva em tags html. Existe uma boa maneira de escapar do código que não envolve a adição de tags sem sentido à exibição?

Respostas:


226

Você pode usar @:para escapar:

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

ou a <text>tag especial que não é emitida na resposta:

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


10

Você pode adicionar texto como abaixo:

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

quando você usa @navalha, mude para o modo de bloqueio de código. Portanto, você precisa especificar o texto como acima.



8

muitos desenvolvedores forneceram várias maneiras acima .. aqui está mais uma que está funcionando bem no MVC 4 .. Espero que funcione para o MVC 3 também ..

@if(Model.foo)
{
    @Html.Label("Hello World")
}

0

As respostas acima são ótimas. Vou incluir um link para o artigo de Scott Guthrie sobre isso, pois mostra mais alguns exemplos e explicações.

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
}

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.