MVC3 Razor: Displaying html within code blocks

asp.net Mvc-3Razor

asp.net Mvc-3 Problem Overview


In my cshtml files I have a lot of blocks with stuff like this:

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

The only reason the span is there is because I can't find any other way to force it to recognize that "Hello World" is part of the html unless I surround it in html tags. Is there a good way to escape the code that doesn't involve adding meaningless tags to the display?

asp.net Mvc-3 Solutions


Solution 1 - asp.net Mvc-3

You could use @: to escape:

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

or the special <text> tag which is not outputted in the response:

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

Solution 2 - asp.net Mvc-3

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

Solution 3 - asp.net Mvc-3

You can add text in as below:

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

when you use @ razor switch it to code block mode. Hence you need to specify text as above.

Solution 4 - asp.net Mvc-3

<text>Explicit HTML<text>

@(Explicit C#)

Solution 5 - asp.net Mvc-3

many developers has provided many ways above .. here is one more which is working fine in MVC 4 .. I hope it will work for MVC 3 also ..

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

Solution 6 - asp.net Mvc-3

The above answers are great. I'm going to include a link to Scott Guthrie's article on this, since it shows some more examples and explanations.

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
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDMulliganView Question on Stackoverflow
Solution 1 - asp.net Mvc-3Darin DimitrovView Answer on Stackoverflow
Solution 2 - asp.net Mvc-3Sergey MetlovView Answer on Stackoverflow
Solution 3 - asp.net Mvc-3matmatView Answer on Stackoverflow
Solution 4 - asp.net Mvc-3Cătălin RădoiView Answer on Stackoverflow
Solution 5 - asp.net Mvc-3NMathurView Answer on Stackoverflow
Solution 6 - asp.net Mvc-3Eric BurdoView Answer on Stackoverflow