139

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?

6 Answers 6

249

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>
}
Sign up to request clarification or add additional context in comments.

2 Comments

The second way (using <text>) is much better. If you use @: Razor has a habit of losing your indentation, or even worse of adding extra spaces in HMTL tags (eg <div> becomes < div >), hence stopping your page working properly. I've learnt this lesson slowly and painfully - avoid @:!
If anyone is struggling with this, note that the brackets "{ }" are mandatory...
15
@if(Model.foo)
{
  @:Hello World
}

Comments

10
<text>Explicit HTML<text>

@(Explicit C#)

Comments

10

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.

Comments

8

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")
}

Comments

2

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
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.