Pourquoi Html.Raw échappe-t-il à l'esperluette dans la balise d'ancrage dans ASP.NET MVC 4?
J'ai une URL, je voudrais rendre dans une balise d'ancrage dans un Rasoir vue. J'aurais pensé Html.Raw serait la voie à suivre:
@{
string test = "http://someurl.com/someimage.png?a=1234&b=5678";
}
<div>
<a href="@Html.Raw(test)">Test</a>
</div>
Mais cela ne fonctionne pas. L'esperluette encodés et le code HTML est affiché comme:
<div>
<a href="http://someurl.com/someimage.png?a=1234&b=5678">Test</a>
</div>
La chose étrange est que si je ne le Html.Raw appel à l'extérieur de la balise d'ancrage, la sortie HTML est comme prévu:
<div>
@Html.Raw(test)
<div>
est traduit comme:
<div>
http://someurl.com/someimage.png?a=1234&b=5678
</div>
Quelqu'un peut-il expliquer pourquoi il en est?
Edit:
Essayé quelques autres choses, et a constaté que la suite fonctionne comme prévu:
<div data-url="@Html.Raw(test)"></div>
sorties:
<div data-url="http://someurl.com/someimage.png?a=1234&b=5678"></div>
Pour ajouter un peu plus de contexte, mon but n'est pas fait d'utiliser l'URL dans une balise d'ancragedepuis href
s peut être HTML codé et encore (j'ai juste utilisé la balise d'ancrage cas comme un exemple). Plutôt je souhaite utiliser l'URL dans un <object> <param>
balise de valeur pour un objet Flash. L'objet Flash n'est pas reconnaître correctement le HTML codé URL, mais je ne peux pas obtenir l'URL brut à la sortie correctement.
Je suis à une perte. Le temps de sortir le MVC code source, je suppose...
source d'informationauteur Joe Waller
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe parce que quelque chose dans le pipeline (je suppose rasoir, mais j'avais besoin de le chercher) attribut code pour tous... les valeurs d'attribut. Cela ne devrait pas affecter le navigateur d'atteindre l'emplacement de votre choix.
Vous pouvez tester avec le
@Html.ActionLink(text, action, routeAttributes)
surcharge.sorties
En ce qui concerne votre montage, vous avez juste besoin de faire la totalité de la
<param>
partie de votre valeur brute.Comme ceci:
produit des balises valides:
Mais c'est exactement la façon dont un des balises valides devrait ressembler. L'esperluette doit être codé lorsqu'il est utilisé comme un attribut. Ne vous inquiétez pas, le navigateur va parfaitement bien comprendre cette url.
Avis que le suivant n'est pas valide balisage, vous ne veux pas ce:
Essayer
essayez juste ci-dessous...
Il fonctionne parfaitement.
pourquoi ne pas utiliser jquery pour poster l'url:
dans le contrôleur