MVC3 Razor: Displaying html within code blocks
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?
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>
}
@if(Model.foo)
{
@:Hello World
}
<text>Explicit HTML<text>
@(Explicit C#)
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.
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")
}
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
}
精彩评论