【发布时间】:2012-08-11 09:40:18
【问题描述】:
我有一个 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,因为 hrefs 可以进行 HTML 编码并且仍然可以工作(我只是使用了锚标记案例为例)。相反,我希望在 Flash 对象的 <object> <param> 值标记中使用 URL。 Flash 对象无法正确识别 HTML 编码的 URL,但我无法正确输出原始 URL。
我很茫然。我猜是时候破解 MVC 源代码了……
【问题讨论】:
标签: razor asp.net-mvc-4