我有一个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,因为hrefs可以被HTML编码,但仍然可以工作(我只是使用锚标签的情况作为例子).相反,我希望使用< object> < ParaM> Flash对象的值标签. Flash对象无法正确识别HTML编码的URL,但无法正确输出原始网址.
我很茫然.时间打破MVC源代码我猜…
解决方法
这是正在发生的,因为有些东西在管道中(我猜想剃刀,但我需要查找)属性编码所有…属性值.这不应影响浏览器到达您所需的位置.
您可以使用@ Html.ActionLink(text,action,routeAttributes)重载来测试.
@Html.ActionLink("Test","Index",new { tony = "1",raul = 2 })
<a href="/?tony=1&raul=2">Test</a>
关于你的编辑,你只需要使整个< param>部分原始价值.
@{ var test = "<param src=\"http://someurl.com/someimage.png?a=1234&b=5678\">"; } <div> <object> @Html.Raw(test) </object> </div>
原文地址:https://www.jb51.cc/html/231016.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。