Tengo una URL que me gustaría mostrar en una etiqueta de anclaje tal como está en una vista Razor. Hubiera pensado que Html.Raw sería el camino a seguir:¿Por qué Html.Raw se escapa del ampersand en la etiqueta de anclaje de ASP.NET MVC 4?
@{
string test = "http://someurl.com/someimage.png?a=1234&b=5678";
}
<div>
<a href="@Html.Raw(test)">Test</a>
</div>
Pero esto no funciona. El signo se codifica y el HTML es interpretado como:
<div>
<a href="http://someurl.com/someimage.png?a=1234&b=5678">Test</a>
</div>
Lo extraño es que si hago la llamada Html.Raw fuera de la etiqueta de anclaje, la salida HTML es el esperado:
<div>
@Html.Raw(test)
<div>
se representa como:
<div>
http://someurl.com/someimage.png?a=1234&b=5678
</div>
Puede alguien explicar por qué esto es?
Editar:
intentado algunas otras cosas, y encontraron que los siguientes trabajos como se esperaba:
<div data-url="@Html.Raw(test)"></div>
salidas:
<div data-url="http://someurl.com/someimage.png?a=1234&b=5678"></div>
Para añadir un poco más de contexto, mi objetivo no es utilizar la URL en una etiqueta de ancla, ya que href
s pueden estar codificadas en HTML y seguir funcionando (acabo de utilizar el caso chor tag como ejemplo). En su lugar, deseo utilizar la URL en una etiqueta de valor <object> <param>
para un objeto Flash. El objeto Flash no reconoce correctamente la URL codificada en HTML, pero no puedo hacer que la URL en bruto se emita correctamente.
Estoy perdido. Hora de romper el código fuente MVC supongo ...
posible duplicado de [¿Por qué se MVC 4 Razor escapando de signo cuando se utiliza HTML.Raw en un atributo de título] (http://stackoverflow.com/questions/12321616/why-is-mvc-4-razor- escaping-ampersand-when-using-html-raw-in-a-title-attribute) –