我如何告诉浏览器呈现字符串,而不是显示它

时间:2010-12-14 13:08:18

标签: html asp.net-mvc asp.net-mvc-2 asp.net-mvc-3 viewengine

我创建了这个扩展方法,它将数据库中所有类别的字符串作为超链接返回。大!

@Html.MyMenu()

问题是链接显示为文本而不是呈现为超链接。

查看源代码时,我看到:

<div id="menucontainer">

                &lt;a href=&quot;/Anuncio/Electronics&quot;&gt;Electronics&lt;/a&gt;&lt;a href=&quot;/Anuncio/Clothes&quot;&gt;Clothes&lt;/a&gt;&lt;a href=&quot;/Anuncio/Domestic&quot;&gt;Domestic&lt;/a&gt;&lt;a href=&quot;/Anuncio/Garden&quot;&gt;Garden&lt;/a&gt;

            </div>

我想我可能错了,但我记得在MVC2中(使用默认视图引擎)你有:

<%: this is rendered, right? %>

或者我错了?无论如何,我正在使用MVC3和Razor引擎。非常感谢你的帮助。我真的很享受尽可能多的学习。

4 个答案:

答案 0 :(得分:2)

默认情况下,Razor会转义HTML。

为避免这种情况,请执行以下操作:

Writing/outputting HTML strings unescaped

答案 1 :(得分:1)

在RC2中,一个名为@ HTml.Raw的新方法应该用于此。

或者您可以更改MyMenu以返回HtmlString或MvcString而不仅仅是字符串。

答案 2 :(得分:0)

你的扩展方法应该返回一个MvcHtmlString,以便使用<%: %>在你的页面上正确显示如果它返回一个字符串,所有尖括号和其他html特殊字符将被html编码

答案 3 :(得分:0)

RC2支持@ Html.Raw()输出原始HTML

来自Scott Guthrie's RC2 anouncement

  

使用RC2,我们添加了一个Html.Raw()辅助方法,您可以使用它来明确指出您不想对输出进行HTML编码,而是希望“按原样”呈现内容