У меня есть 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="#" onclick="location.href='http://someurl.com/someimage.png?a=1234&b=5678'; return false;">Test</a>
</div>
Странно, что если я вызову Html.Raw за пределами привязанного тега, вывод HTML будет таким, как ожидалось:
<div>
@Html.Raw(test)
<div>
отображается как:
<div>
http://someurl.com/someimage.png?a=1234&b=5678
</div>
Может кто-нибудь объяснить, почему это?
Edit:
Пробовал несколько других вещей и обнаружил, что следующее работает как ожидалось:
<div data-url="@Html.Raw(test)"></div>
выходы:
<div data-url="http://someurl.com/someimage.png?a=1234&b=5678"></div>
Чтобы добавить немного больше контекста, моя цель состоит не в том, чтобы использовать URL-адрес в теге привязки, так как href
может быть закодирован и по-прежнему работать в формате HTML (я просто использовал анкерный тег В качестве примера). Скорее, я хочу использовать URL-адрес в теге значения <object> <param>
для объекта Flash. Объект Flash неправильно распознает URL, закодированный в HTML, но я не могу правильно получить исходный URL.
Я в недоумении. Полагаю, время разломать исходный код MVC...