1

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

@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

4 回答 4

2

Razor 默认转义 HTML。

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

写入/输出未转义的 HTML 字符串

于 2010-12-14T13:12:00.210 回答
1

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

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

于 2010-12-14T13:17:21.597 回答
0

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

于 2010-12-14T13:12:46.527 回答
0

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

来自Scott Guthrie 的 RC2 公告

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

于 2010-12-14T17:44:42.800 回答