Why is MVC 4 Razor escaping ampersand when using H

2019-01-23 16:37发布

问题:

We recently upgraded to MVC 4 and now we are having titles in our links not display correctly. The problem is before HTML.Raw would not escape & in our title attributes, but now it does. Below is my sample code:

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

Which produces the following markup:

<a title="Shoe Size 6&amp;#189;-8">Test</a>

The only solution I found so far was to put the entire anchor into a string and then HTML.Raw that string.

Why is Html.Raw escaping ampersand in anchor tag in ASP.NET MVC 4?.

This is a very ugly solution and I am hoping there is a better alternative.

回答1:

While it is only a small step less ugly workaround, you can simply @Html.Raw the full attribute name and value.

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

Results in:

<a title="Show Size 6&#189;-8">Test</a>


回答2:

If you can't do the workaround listed above, I have a patched base-class you could try injecting via web.config. Check it out at https://gist.github.com/4036121