0

はい/いいえオプションを使用して、ASP.Net で JavaScript Message-Box を使用したいと考えています。シナリオは、ボタンの Client_click イベントで JavaScript 関数を呼び出すと、正常に動作することです。しかし、コード ビハインド (C#) からこれを呼び出すと、コードの実行が完了した後にポップアップします。ここに私がしようとしているものがあります:

    protected void Message_Click(object sender, EventArgs e)
    {
        if (var == 1)
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "open", "Confirm();", true);
        }
        string confirmValue = Request.Form["confirm_value"];


        if (confirmValue == "Yes")
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked YES!')", true);
        }
        else
        {
            this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Nothing has been selected')", true);
        }

    }

条件var == 1が真であっても、文字列 confirmValueの更新された値を取得していません。ただし、「OnClientClick」で呼び出すと、正常に動作します。ほとんどすべての URL を調べましたが、まだ運がありません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

コードはサーバー側で確認値を待ちません。Page.ClientScript.RegisterStartupScriptはクライアント スクリプトを登録するだけで、その瞬間にメソッドの実行が完了します。そして、それはコードの次の行に続きます。登録された JavaScript コードを処理するのは、サーバーの責任ではありません。したがって、Yes/NO確認を達成してサーバー側を待ちたい場合AjaxModelPopupExtenderは、必要なものを提供するカスタムコードで を使用します。 ここでは、ajaxmodel ポップアップ エクステンダーの使用方法に関する詳細情報を取得できます

于 2015-02-16T07:33:21.737 に答える
0

そのままにしてはいけません。コードのコーダーは正しいです。クライアントサイドでクライアントのことを行い、処理するデータまたは処理する決定をサーバーに送信します。

あなたの場合、Javascript関数を記述し、必要なときにその関数をトリガーするだけです。応答が「はい」の場合は、ポストバックまたは Ajax を実行します。そうでない場合は、ページにとどまります。

サンプル javascipt 関数は次のようになります。

<script language="javascript" type="text/javasctipt">
function getConfirmation(){
var r = confirm("Press a button!");
   if (r == true) {
      return true;
   } else {
      return false;
 }
}
</script>

これを次のように直接呼び出すことができます-

return confirm("Confirm Input");

優れたカスタム UI を使用したい場合は、Ajax コントロール ツールキットで Ajax Modelpopupextender を使用できます。

http://www.codeproject.com/Articles/34996/ASP-NET-AJAX-Control-Toolkit-ModalPopupExtender-Co

于 2015-02-16T07:46:13.540 に答える