2011-07-06 3 views
109

Dans mes fichiers cshtml j'ai beaucoup de blocs avec des trucs comme ça:MVC3 Razor: html Affichage dans les blocs de code

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

La seule raison pour laquelle la durée est là parce que je ne peux pas trouver une autre façon pour le forcer à reconnaître que "Hello World" fait partie du html à moins que je l'entoure dans les balises html. Existe-t-il un bon moyen d'échapper le code qui n'implique pas d'ajouter des balises sans signification à l'affichage?

Répondre

195

Vous pouvez utiliser @: pour échapper à:

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

ou l'étiquette <text> spéciale qui ne sont pas émis dans la réponse:

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

Vous pouvez ajouter du texte en tant que ci-dessous:

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

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

8
<text>Explicit HTML<text> 

@(Explicit C#) 
7

de nombreux développeurs ont fourni de nombreuses façons ci-dessus .. voici une autre qui fonctionne très bien dans MVC 4 .. J'espère que cela fonctionnera pour MVC 3 aussi ..

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