4

我有一个这样构造的 RouteLink

<p class="articleLink">
    @MvcHelper.Html.RouteLink(article.Title, "Article_Route", new RouteValueDictionary() { { "articleId", article.Id }, { "seoUrl", article.SeoUrl } }))
</p>

但是,article.Title可能包含 HTML,即值可能是<em>Sample</em> Title这样呈现的

<a href="/Article/111111/Sample-Title">&lt;em&gt;Sample&lt;/em&gt; Title</a>

有什么方法可以防止 HTML 被转义,而是被视为实际的 HTML?或者在这种情况下我是否需要创建一个标准的 HTML<a href...链接(从而失去与 RouteLink 帮助程序相关的所有细节)。

4

2 回答 2

7

如果您希望在锚点中使用 HTML,请不要使用Html.RouteLink(因为默认情况下它会对链接文本进行 HTML 编码,正如您所注意到的),而不是使用使用生成 urla手动构建标签:Url.RouteUrl

<p class="articleLink">
    <a href="@(Url.RouteUrl("Article_Route",
                   new RouteValueDictionary() 
                      { { "articleId", article.Id }, 
                        { "seoUrl", article.SeoUrl } }))">
        @Html.Raw(article.Title)
    </a>
</p>

或者您可以创建自己的非编码RouteLink助手。

于 2012-08-24T11:43:33.390 回答
-1

您可以使用HtmlHelper.Raw()。话虽如此,在模型/视图模型中保留任何 HTML 可能不是一个好主意,这违反了模型和表示分离的原则,也是一个安全隐患。

于 2012-08-24T11:44:04.997 回答