1

私のasp.netアプリケーションには、2つのiframeがあるページがあり、このiframe内に表示されているメインページにはボタンが含まれています。このボタンを押すと、URLの一部であるjavascript関数が呼び出され、親ウィンドウでjavascript関数が呼び出されます。親からの関数がヒットすると、iframeのsrcを別のページに変更する必要があります-これは発生していません。メインのiframeのIDはContentIframeで、サイドのiframeのIDはLeftIframeです。これがヒットすると、左側のiframe srcは何も変更されません。これは、左側のディスプレイに以前にあったものが表示されないために機能します。コンテンツフレームのiframesrcを変更する呼び出しが発生し、コードビハインドも読み込まれます(コードビハインドのページロードにトレースポイントを配置することでわかります)が、ページがiframeに表示されることはありません。クリックした元のボタンのある前のページはまだ表示されています。なぜこれが起こるのか誰かが知っていますか?これが私のコードです

ボタン

<asp:Button ID="btnEditClient" onclientclick="editClient();" runat="server" Text="Edit Client Info" />

editClientjavascript関数

function editClient() {
var location = window.location.href;
var idindex = location.indexOf("clientid");
idindex = idindex + 9;
var id = location.slice(idindex, location.length);
window.parent.redir('client', id);

}

親javascript関数をredir

function redir(type, id) {
    if (type = 'client') {
        document.getElementById('ContentIframe').src = "NewCustomer.aspx?clientid=" + id;
        document.getElementById('LeftIframe').src = "";

    }
}

上記のLeftIframesrcの変更の下に次の行を追加する場合

document.getElementById('ContentIframe').disabled = true; 

ContentIframeはまったく表示されません。また、上記のように、ブレークポイントを使用してわかるように、NewCustomer.aspxページのページロードがヒットします。再度、感謝します!

編集-srcを変更するための呼び出しの後、開発者ツールを見て、これがiframeのフォームですが、前のページの項目がまだ表示されています-これが役立つかどうかはわかりません-おそらくmethod=postはこれ?

<form id="form1" action="NewClientSummary.aspx?clientid=13" method="post">
4

1 に答える 1

1

問題は、送信ボタン<asp:Button>としてレンダリングされることです。これは、クリックするとフォームが送信され、フレーム内のフォームがおそらく同じページに移動することを意味します。(デフォルトのアクション)

通常のボタンを使用します。

<button type="button" id="btnEditClient" onclick="editClient();">Edit Client Info</button>

または、サーバー側で必要な場合は、falseを返すことでボタンのデフォルトのアクションをキャンセルします。

<asp:Button ID="btnEditClient" onclientclick="editClient(); return false;" runat="server" Text="Edit Client Info" />
于 2012-12-17T07:53:41.300 に答える