MVC3 Razor: HTML in Codeblöcken anzeigen


131

In meinen cshtml-Dateien habe ich viele Blöcke mit solchen Dingen:

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

Der einzige Grund, warum die Spanne vorhanden ist, ist, dass ich keinen anderen Weg finden kann, um zu erzwingen, dass "Hello World" Teil des HTML-Codes ist, es sei denn, ich umgeben ihn mit HTML-Tags. Gibt es eine gute Möglichkeit, dem Code zu entkommen, bei dem der Anzeige keine bedeutungslosen Tags hinzugefügt werden?

Antworten:


226

Sie könnten verwenden @:, um zu entkommen:

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

oder das spezielle <text>Tag, das nicht in der Antwort ausgegeben wird:

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


10

Sie können Text wie folgt hinzufügen:

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

Wenn Sie @Rasiermesser verwenden, schalten Sie es in den Codeblock-Modus. Daher müssen Sie den Text wie oben angeben.



8

Viele Entwickler haben oben viele Möglichkeiten angegeben. Hier ist eine weitere, die in MVC 4 einwandfrei funktioniert. Ich hoffe, dass sie auch für MVC 3 funktioniert.

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

0

Die obigen Antworten sind großartig. Ich werde einen Link zu Scott Guthries Artikel dazu einfügen, da er einige weitere Beispiele und Erklärungen enthält.

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
}

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.