C# Javascript window.open()转义符号

C# Javascript window.open()转义符号,c#,javascript,asp.net,popup,C#,Javascript,Asp.net,Popup,我正在升级一个遗留应用程序,它使用Javascriptwindow.open()打开弹出窗口来设置值,这是一种令人讨厌的做法。我在将querystring变量传递到弹出窗口时遇到问题,因为url是在服务器端构建的 范例 JS: XML 单击标签时,我希望弹出窗口打开查询字符串: http://detail.aspx?item=123&code=ABC 相反,我得到的是这样的东西: http://detail.aspx?item=123&%3bcode=ABC 如何防止这种情况发生?您可以尝

我正在升级一个遗留应用程序,它使用Javascript
window.open()
打开弹出窗口来设置值,这是一种令人讨厌的做法。我在将querystring变量传递到弹出窗口时遇到问题,因为url是在服务器端构建的

范例

JS:

XML

单击标签时,我希望弹出窗口打开查询字符串:

http://detail.aspx?item=123&code=ABC

相反,我得到的是这样的东西:
http://detail.aspx?item=123&%3bcode=ABC


如何防止这种情况发生?

您可以尝试使用以下代码进行编码:


编码URI有效吗?像这样包装您的
vLink

lblOpener.Attributes.Add("onclick", "popupwindow('" & encodeURI(vLink) & "');");

可能有用

这是行不通的。我在四处搜索时试过这个。它对所有内容进行编码,甚至包括“=”,并创建一个不安全的url。很好的解决方案。现在我想这是非常有意义的。。。如果您想为Javascript编码某些内容,可能应该使用JavaScriptSerializer对其进行序列化。
<asp:Label ID="lblOpener" runat="server" Text="_"></asp:Label>
int ditem = 123;
string dcode = "ABC";
string vLink = string.Format("detail.aspx?item={0}&code={1}", ditem, dcode);
lblOpener.Attributes.Add("onclick", "popupwindow('" & vLink & "');");
lblOpener.Attributes.Add("onclick", "popupwindow(" & New JavaScriptSerializer().Serialize(vLink) & ");");
lblOpener.Attributes.Add("onclick", "popupwindow('" & encodeURI(vLink) & "');");