RazorビューでそのままアンカータグにレンダリングしたいURLがあります。私はHtml.Rawが進むべき道だと思っていたでしょう:
@{
string test = "http://someurl.com/someimage.png?a=1234&b=5678";
}
<div>
<a href="@Html.Raw(test)">Test</a>
</div>
しかし、これは機能しません。アンパサンドがエンコードされ、HTMLは次のようにレンダリングされます。
<div>
<a href="http://someurl.com/someimage.png?a=1234&b=5678">Test</a>
</div>
奇妙なことに、アンカータグの外でHtml.Raw呼び出しを行うと、HTML出力は期待どおりになります。
<div>
@Html.Raw(test)
<div>
次のようにレンダリングされます:
<div>
http://someurl.com/someimage.png?a=1234&b=5678
</div>
誰かがこれがなぜであるか説明できますか?
編集:
他のいくつかのことを試してみたところ、次のことが期待どおりに機能することがわかりました。
<div data-url="@Html.Raw(test)"></div>
出力:
<div data-url="http://someurl.com/someimage.png?a=1234&b=5678"></div>
もう少しコンテキストを追加するために、私の目標は実際にはアンカータグでURLを使用することではありません。これは、href
sをHTMLエンコードしても機能するためです(例としてアンカータグのケースを使用しました)。<object> <param>
むしろ、Flashオブジェクトの値タグでURLを使用したいと思います。FlashオブジェクトはHTMLエンコードされたURLを正しく認識しませんが、生のURLを正しく出力することができません。
私は途方に暮れています。私が推測するMVCソースコードを分解する時が来ました...