1

jquery ベースのモーダル ウィンドウ (colobox jquery プラグインを使用) を開くためのリンクを含む ASP.net ページがあります。そのウィンドウのコンテンツは、別の aspx ファイルから読み込まれます (iframe が読み込まれます)。ユーザーが asp:button を押したとき、およびコード ビハインドの条件がうまくいった場合に、そのウィンドウを閉じたいと思います。

これらの方法のように、コードビハインドからそのウィンドウを閉じるために多くの方法を試しました:

Page.RegisterStartupScript("X", @"$(this).dialog('close');");

Page.RegisterStartupScript("X", @"var win = window.open('','_self'); win.close();");

btnDone.Attributes.Add("onclick", @"var win = window.open('','_self'); win.close();");

btnDone.Attributes.Add("onclick", @"window.open('../px/nsk.aspx', '_self', null); window.close(); ");

System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>");
            System.Web.HttpContext.Current.Response.Write("self.close();");
            System.Web.HttpContext.Current.Response.Write("</SCRIPT>");

しかし、そのモーダルウィンドウを閉じることはできません。私はFirefoxの最新バージョンでテストしています。コードビハインドは、次のように sth と見なすことができます。

    // do some database works
if (condition)
{
   // close this modal window
}

jqueryのメソッドも試しましたが、どれも成功しませんでした。このウィンドウを閉じる方法を教えてください。

4

3 に答える 3

1

与えられた他の回答は詳細を提供します。この「答え」は、より概念的/相談的であることを試みています。

ウィンドウを閉じる

カラーボックス ウィンドウを閉じる操作は、クライアント側で行います。@KennyZ と @Farshid の両方が、これを行う方法の詳細を提供しています。デフォルトでは、ColorBox は ESC またはその EXIT ui 要素 (使用されている場合) を押すと閉じます。プログラムでボックスを閉じることもできます。これは、必要なことのように思えます。

Close アクションはどこで呼び出されますか?

@KennyZ は、「コード ビハインドの一部の条件がうまくいった」かどうかを判断するための Ajax 呼び出しを提案しています。これは、ページ全体の更新を容認できないことを前提としていますが (これは私には理にかなっているように思えます)、それはあなたが決めることです。

「うまくいった」という判断がサーバー上でしかできない場合は、Ajax またはページ全体の更新を検討しています。

または、クライアント側で判断する方法があれば、バックエンドに戻る必要はまったくありません。js を使用してカラーボックス ウィンドウを閉じるだけです。

ColorBox ウィンドウを閉じる/閉じないことを制御するアクションについて詳細を提供できる場合は、コミュニティがさらに役立つ可能性があります。

于 2012-09-19T00:57:52.037 に答える
0

問題は次のように解決されます。

    Page.ClientScript.RegisterStartupScript(GetType(), 
        "CloseKey", "parent.$.colorbox.close();", true);
于 2012-09-18T20:22:14.010 に答える
0

iframe の代わりに div で jQuery ダイアログを使用します。

次に、Ajax ポストを使用してサーバー側コードを実行し、結果を見てダイアログで何をするかを決定できます。

ダイアログを宣言します。

    $(document).ready(function () {
        jQuery("#MyDialog").dialog(
            {
                bgiframe: true,
                autoOpen: false,
                modal: true,
                width: 800,
                position: ['center', 100]
            }
        );
    });

ダイアログにデータを入力して開きます。

    $('#OpenMyDialog').click(function () {
        $.post($('url_for_dialog_contents'), function (data) {
            $("#MyDialog").empty();
            $("#MyDialog").append(data);
        }, null, "html");
        $('#MyDialog').dialog('open');
        return false;
    });

ダイアログを送信します。

    $('#SubmitMyDialog').click(function () {
        $.post($('url_for_dialog_action'), function (data) {
            if (data.success == true) { $('#MyDialog').dialog('close'); }
        }, null, "json");
    });

送信ダイアログにはさらに多くのコードが必要になると思いますが、これが一般的な考え方です。

于 2012-09-18T20:32:42.913 に答える