Dlaczego Html.Raw ucieka ampersand w tagu anchor w ASP.NET MVC 4?

Mam adres URL, który chciałbym renderować w tagu kotwicy, tak jak w widoku Razor. Pomyślałbym, że Html.Raw będzie dobrym rozwiązaniem:

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

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

Ale to nie działa. Znak ampersand zostaje zakodowany, a kod HTML jest renderowany jako:

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

Dziwne jest to, że jeśli wykonam wywołanie Html.Raw poza znacznikiem zakotwiczenia, wynik HTML jest zgodny z oczekiwaniami:

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

jest renderowany jako:

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

Czy ktoś może wyjaśnić, dlaczego tak jest?

Edytować:

Wypróbowałem kilka innych rzeczy i odkryłem, że poniższe działają zgodnie z oczekiwaniami:

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

wyjścia:

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

Aby dodać trochę więcej kontekstu,moim celem nie jest użycie adresu URL w tagu kotwicy, odhrefs może być kodowane w HTML i nadal działać (użyłem jako przykładu przypadku tagu zakotwiczenia). Raczej chcę użyć adresu URL w<object> <param> znacznik wartości dla obiektu Flash. Obiekt Flash nie rozpoznaje poprawnie zakodowanego adresu URL HTML, ale nie mogę uzyskać nieprzetworzonego adresu URL do prawidłowego wyjścia.

Jestem w rozterce. Czas przełamać kod źródłowy MVC ...

questionAnswers(5)

yourAnswerToTheQuestion