Jak*_*ade 7 c# vb.net asp.net html-encode
小问题,但它仍然让我疯狂.
我正在构建一个<script>包含要在ASP.NET页面上呈现的标记的URL ,如下所示:
<script src='<%= string.Format("http://example.com/page.aspx?a={0}&b={1}&c={2:0.00}", A, B, C)%>' type='text/javascript'></script>
Run Code Online (Sandbox Code Playgroud)
问题是,渲染时,&字符将替换为&:
<script src='http://example.com/page.aspx?a=xxx&b=zzz&c=123.45' type='text/javascript'></script>
Run Code Online (Sandbox Code Playgroud)
我很期待这个,显然:
<script src='http://example.com/page.aspx?a=xxx&b=zzz&c=123.45' type='text/javascript'></script>
Run Code Online (Sandbox Code Playgroud)
但是,如果我直接在<script>标签外面渲染网址,它看起来还不错!干得好
<%= string.Format("http://example.com/page.aspx?a={0}&b={1}&c={2:0.00}", A, B, C) %>
Run Code Online (Sandbox Code Playgroud)
呈现这个:
http://example.com/page.aspx?a=xxx&b=zzz&c=123.45
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?我该如何制止这种疯狂?我的强迫症不能服用!
正如@Falkon和@AVD所说,ASP.NET会自动在<script>标签中做"正确"的事情.参见w3c建议 - C.12.在属性值(以及其他地方)中使用&符号
为了确保文档与历史HTML用户代理和基于XML的用户代理兼容,文档中用作文字字符的&符必须表示为实体引用(例如"
&").
我不完全确定为什么ASP.NET在页面的其余部分不会做同样的事情(可能有很多好的理由),但至少它正在纠正脚本标签中的&符号.结论:虽然您可能会诅咒ASP.NET以"扰乱"您的网址,但您可能要感谢它,以帮助您的网页符合标准.
| 归档时间: |
|
| 查看次数: |
12998 次 |
| 最近记录: |