为什么MVC 4 Razor在title属性中使用HTML.Raw时会转义&符号

Ble*_*ger 11 razor asp.net-mvc-4

我们最近升级到MVC 4,现在我们的链接中的标题无法正确显示.问题出在HTML.Raw无法转义和我们的标题属性之前,但现在确实如此.以下是我的示例代码:

<a title="@Html.Raw("Shoe Size 6&#189;-8")">Test</a>
Run Code Online (Sandbox Code Playgroud)

产生以下标记:

<a title="Shoe Size 6&amp;#189;-8">Test</a>
Run Code Online (Sandbox Code Playgroud)

到目前为止我找到的唯一解决方案是将整个锚放入一个字符串然后HTML.Raw该字符串.

为什么Html.Raw在ASP.NET MVC 4中转义锚标记中的&符号?.

这是一个非常难看的解决方案,我希望有更好的选择.

pat*_*dge 15

虽然这只是一个不那么难看的解决方法,但您可以简单地@Html.Raw使用完整的属性名称和值.

<a @Html.Raw("title=\"Show Size 6&#189;-8\"")>Test</a>
Run Code Online (Sandbox Code Playgroud)

结果是:

<a title="Show Size 6&#189;-8">Test</a>
Run Code Online (Sandbox Code Playgroud)


And*_*rse 8

如果你不能做上面列出的解决方法,我有一个修补的基类,你可以尝试通过web.config注入.请访问https://gist.github.com/4036121查看

  • 很好 - 谢谢[排队等待修复](http://aspnetwebstack.codeplex.com/workitem/393). (2认同)