Asp.net 如何在URL';使用RegisterClientScriptInclude时的查询字符串?

Asp.net 如何在URL';使用RegisterClientScriptInclude时的查询字符串?,asp.net,asp.net-2.0,escaping,Asp.net,Asp.net 2.0,Escaping,我需要将javascript包含添加到我的ASP.NET页面。javascript文件的url在查询字符串中有两个键/值对。但是,符号正在被逃脱,我不想这样 Page.ClientScript.RegisterClientScriptInclude("myKey", "https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&s=1") 这将生成以下HTML: <script src="https:

我需要将javascript包含添加到我的ASP.NET页面。javascript文件的url在查询字符串中有两个键/值对。但是,符号正在被逃脱,我不想这样

Page.ClientScript.RegisterClientScriptInclude("myKey",
    "https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&s=1")
这将生成以下HTML:

<script
    src="https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&amp;s=1"
    type="text/javascript"></script>

但我真正想要的是:

<script
    src="https://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&s=1"
    type="text/javascript"></script>


帮助?

我以前遇到过这个问题,但从未找到解决办法。我需要创建URL服务器端,我不喜欢在我的aspx页面中放入内联代码,因此我最终使用
Literal
控件并构建脚本标记并分配它

例如:

<form id="form1" runat="server">
    <asp:Literal ID="ltScriptInclude" runat="server"></asp:Literal>
一个完整的方法是,通过将赋值包装在
if
中来检查注册密钥,如:

if (IsStartupScriptRegistered("myKey"))
{
    // assign
    // set the key
}
但是这可能是不需要的,因为它不会被分配到任何其他地方,因为
PostBack
double分配了它


这不是最干净的解决方案,如果
RegisterClientScriptInclude
有某种类型的参数告诉它不要编码,那就太好了。不幸的是,我不认为有任何办法可以解决这一问题,上述情况也不太糟糕。大多数脚本文件的include通常没有
&
,因此绝大多数不会遇到这个问题。

实际上,编码的符号是有效的HTML标记。您的目标是尝试生成无效标记。未编码的符号和无效。

我在仪表板上大量使用用户控件,因此我必须拥有IsStartupScriptRegistered(字符串)功能以避免脚本重复,您建议采用什么方法?感谢您指出Mike,因为属性中未转义的符号和被解释为实体引用的开始,如中所述
if (IsStartupScriptRegistered("myKey"))
{
    // assign
    // set the key
}