2

我正在升级一个遗留应用程序,它使用了使用 Javascriptwindow.open()打开弹出窗口以设置值的烦人做法。我在将查询字符串变量传递到该弹出窗口时遇到问题,因为 url 是在服务器端构建的。

例子

JS:

function popupwindow(vLink) { 
    window.open(vLink, 'Detail','width=600px,height=545px,status=yes,help=no,scrollbars=yes,resizable=yes,top=350');
}

XML

<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 & "');");

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

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

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

我怎样才能防止这种情况发生?

4

2 回答 2

5

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

lblOpener.Attributes.Add("onclick", "popupwindow(" & New JavaScriptSerializer().Serialize(vLink) & ");");
于 2012-11-20T17:04:01.277 回答
0

encodeURI 会起作用吗?像这样包装你 vLink

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

可能工作!

于 2012-11-20T17:08:19.040 回答