Warum gibt Html.Raw in ASP.NET MVC 4 ein kaufmännisches Und-Zeichen im Ankertag aus?

Ich habe eine URL, die ich in einem Ankertag so wie sie ist in einer Razor-Ansicht rendern möchte. Ich hätte gedacht, Html.Raw wäre der richtige Weg:

@{
    string test = "http://someurl.com/someimage.png?a=1234&b=5678";
}

<div>
    <a href="@Html.Raw(test)">Test</a>
</div>

Das geht aber nicht. Das kaufmännische Und wird codiert und der HTML-Code wie folgt dargestellt:

<div>
    <a href="http://someurl.com/someimage.png?a=1234&amp;b=5678">Test</a>
</div>

Das Seltsame ist, dass wenn ich den Html.Raw-Aufruf außerhalb des Anchor-Tags mache, die HTML-Ausgabe wie erwartet ist:

<div>
    @Html.Raw(test)
<div>

wird gerendert als:

<div>
    http://someurl.com/someimage.png?a=1234&b=5678
</div>

Kann mir jemand erklären, warum das so ist?

Bearbeiten:

Ich habe ein paar andere Dinge ausprobiert und festgestellt, dass Folgendes wie erwartet funktioniert:

<div data-url="@Html.Raw(test)"></div>

Ausgänge:

<div data-url="http://someurl.com/someimage.png?a=1234&b=5678"></div>

Um etwas mehr Kontext hinzuzufügen,Mein Ziel ist es eigentlich nicht, die URL in einem Ankertag zu verwenden, schon seithrefs kann HTML-codiert sein und funktioniert immer noch (ich habe nur den Anchor-Tag-Fall als Beispiel verwendet). Vielmehr möchte ich die URL in einer<object> <param> Wertetag für ein Flash-Objekt. Das Flash-Objekt erkennt die HTML-codierte URL nicht richtig, aber ich kann die unformatierte URL nicht richtig ausgeben.

Ich bin ratlos. Zeit, den MVC-Quellcode herauszubrechen, denke ich ...

Antworten auf die Frage(5)

Ihre Antwort auf die Frage