Почему Html.Raw экранирует амперсанд в теге привязки в ASP.NET MVC 4?
У меня есть URL, который я хотел бы отобразить в теге привязки как есть в представлении Razor. Я бы подумал, Html.Raw будет путь:
@{
string test = "http://someurl.com/someimage.png?a=1234&b=5678";
}
<div>
<a href="@Html.Raw(test)">Test</a>
</div>
Но это не работает. Амперсанд кодируется, а HTML отображается как:
<div>
<a href="http://someurl.com/someimage.png?a=1234&b=5678">Test</a>
</div>
Странно то, что если я выполняю вызов Html.Raw вне тега привязки, вывод HTML будет таким, как ожидалось:
<div>
@Html.Raw(test)
<div>
отображается как:
<div>
http://someurl.com/someimage.png?a=1234&b=5678
</div>
Кто-нибудь может объяснить, почему это так?
Редактировать:
Попробовал несколько других вещей и обнаружил, что следующее работает, как ожидалось:
<div data-url="@Html.Raw(test)"></div>
выходы:
<div data-url="http://someurl.com/someimage.png?a=1234&b=5678"></div>
Чтобы добавить немного больше контекста,my goal is not actually to use the URL in an anchor tag, посколькуhref
s может быть в кодировке HTML и все еще работать (я просто использовал случай с тегом привязки в качестве примера). Скорее я хочу использовать URL в<object> <param>
тег значения для объекта Flash. Объект Flash не может правильно распознать закодированный в HTML URL, но я не могу получить необработанный URL для правильного вывода.
Я в растерянности. Время вспомнить исходный код MVC, я думаю ...