2

レガシーアプリケーションをアップグレードしていますが、値を設定するためにJavascriptを使用window.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 に答える