c# – ASP.NET自动将&转换为&

前端之家收集整理的这篇文章主要介绍了c# – ASP.NET自动将&转换为&前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
小问题,但它仍然让我疯狂.

我正在为< script>构建一个url标记包含要在ASP.NET页面上呈现,如下所示:

<script src='<%= string.Format("http://example.com/page.aspx?a={0}&b={1}&c={2:0.00}",A,B,C)%>' type='text/javascript'></script>

问题是何时呈现,&字符替换为& amp;:

<script src='http://example.com/page.aspx?a=xxx&amp;b=zzz&amp;c=123.45' type='text/javascript'></script>

我很期待这个,显然:

<script src='http://example.com/page.aspx?a=xxx&b=zzz&c=123.45' type='text/javascript'></script>

但是,如果我直接渲染网址,则在< script>之外标签,看起来还不错!干得好

<%= string.Format("http://example.com/page.aspx?a={0}&b={1}&c={2:0.00}",C) %>

呈现这个:

http://example.com/page.aspx?a=xxx&b=zzz&c=123.45

是什么赋予了?我该如何制止这种疯狂?我的强迫症不能服用!

解决方法

正如@Falkon和@AVD所说,ASP.NET在< script>中自动执行“正确”的操作.标签.请参阅w3c建议 – C.12. Using Ampersands in Attribute Values (and Elsewhere)

In order to ensure that documents are compatible with historical HTML user agents and XML-based user agents,ampersands used in a document that are to be treated as literal characters must be expressed themselves as an entity reference (e.g. “&amp;“).

我不完全确定为什么ASP.NET在页面的其余部分不会做同样的事情(可能有很多好的理由),但至少它正在纠正脚本标记中的&符号.结论:虽然您可能正在诅咒ASP.NET以“扰乱”您的网址,但您可能要感谢它,而不是帮助您的网页符合标准.

猜你在找的C#相关文章