MVC3 Razor: affichage html dans des blocs de code

131

Dans mes fichiers cshtml, j'ai beaucoup de blocs avec des trucs comme ceci:

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

La seule raison pour laquelle le span est là est parce que je ne trouve pas d'autre moyen de le forcer à reconnaître que "Hello World" fait partie du html à moins que je ne l'entoure de balises html. Existe-t-il un bon moyen d'échapper au code qui n'implique pas l'ajout de balises sans signification à l'affichage?

DMulligan
la source

Réponses:

226

Vous pouvez utiliser @:pour vous échapper:

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

ou l' <text>étiquette spéciale qui n'est pas sortie dans la réponse:

@if(Model.foo)
{
    <text>Hello World</text>
}
Darin Dimitrov
la source
14
@if(Model.foo)
{
  @:Hello World
}
Sergey Metlov
la source
10

Vous pouvez ajouter du texte comme ci-dessous:

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

lorsque vous utilisez le @rasoir, passez en mode bloc de code. Par conséquent, vous devez spécifier le texte comme ci-dessus.

matmat
la source
8
<text>Explicit HTML<text>

@(Explicit C#)
Cătălin Rădoi
la source
8

de nombreux développeurs ont fourni de nombreuses méthodes ci-dessus .. en voici une qui fonctionne bien dans MVC 4 .. J'espère que cela fonctionnera également pour MVC 3 ..

@if(Model.foo)
{
    @Html.Label("Hello World")
}
NMathur
la source
0

Les réponses ci-dessus sont excellentes. Je vais inclure un lien vers l'article de Scott Guthrie à ce sujet, car il montre d'autres exemples et explications.

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
}

Eric Burdo
la source