我有一个 URL,我想在 Razor 视图中按原样呈现在锚标记中。我会认为 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 源代码了……