Почему 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&amp;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, посколькуhrefs может быть в кодировке HTML и все еще работать (я просто использовал случай с тегом привязки в качестве примера). Скорее я хочу использовать URL в<object> <param> тег значения для объекта Flash. Объект Flash не может правильно распознать закодированный в HTML URL, но я не могу получить необработанный URL для правильного вывода.

Я в растерянности. Время вспомнить исходный код MVC, я думаю ...

Ответы на вопрос(5)

Ваш ответ на вопрос