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&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 seithref
s 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 ...