サーバー コードからモーダル ポップアップ ウィンドウを起動する (C#)

作成者: Christian Wenz

PDF のダウンロード

AJAX Control Toolkit の ModalPopup コントロールは、クライアント側の手段を使用してモーダル ポップアップを作成する簡単な方法を提供します。 ただし、一部のシナリオでは、サーバー側でモーダル ポップアップを開く必要があります。

概要

AJAX Control Toolkit の ModalPopup コントロールは、クライアント側の手段を使用してモーダル ポップアップを作成する簡単な方法を提供します。 ただし、一部のシナリオでは、サーバー側でモーダル ポップアップを開く必要があります。

手順

まず第一に、ModalPopup コントロールの動作を示すために、ASP.NET Button Web コントロールが必要です。 新しいページの <form> 要素内に次のようなボタンを追加します。

<asp:Button ID="ClientButton" runat="server" Text="Launch Modal Popup (Client)" />

次に、作成するポップアップのマークアップが必要です。 <asp:Panel> コントロールとして定義し、Button コントロールが含まれていることを確認します。 ModalPopup コントロールは、そのようなボタンでポップアップを閉じる機能を提供します。それ以外の場合は、簡単に非表示にする方法はありません。

<asp:Panel ID="ModalPanel" runat="server" Width="500px">
 ASP.NET AJAX is a free framework for quickly creating a new generation of more 
 efficient, more interactive and highly-personalized Web experiences that work 
 across all the most popular browsers.<br />
 <asp:Button ID="OKButton" runat="server" Text="Close" />
</asp:Panel>

次に、ASP.NET AJAX Toolkit からページに ModalPopup コントロールを追加します。 コントロールを読み込むボタン、非表示にするボタン、および実際のポップアップの ID のプロパティを設定します。

<ajaxToolkit:ModalPopupExtender ID="mpe" runat="server" TargetControlId="ClientButton" 
 PopupControlID="ModalPanel" OkControlID="OKButton" />

ASP.NET AJAX に基づくすべての Web ページと同様。スクリプト マネージャーは、さまざまなターゲット ブラウザーに必要な JavaScript ライブラリを読み込む必要があります。

<asp:ScriptManager ID="asm" runat="server" />

ブラウザーで例を実行します。 ボタンをクリックすると、モーダル ポップアップが表示されます。 サーバー側コードを使用して同じ効果を得るには、新しいボタンが必要です。

<asp:Button ID="ServerButton" runat="server" Text="Launch Modal Popup (Server)" 
 OnClick="ServerButton_Click" />

ご覧のように、ボタンをクリックするとポストバックが生成され、サーバー上で ServerButton_Click() メソッドが実行されます。 このメソッドでは、正確には launchModal() という JavaScript 関数が実行されます。この JavaScript 関数は、ページが読み込まれると実行されます。

<script runat="server">
 protected void ServerButton_Click(object sender, EventArgs e)
 {
 ClientScript.RegisterStartupScript(this.GetType(), "key", "launchModal();", true);
 }
</script>

launchModal() のジョブは、ModalPopup を表示することです。 launchModal() 関数は、完全な HTML ページが読み込まれた後に実行されます。 ただし、その時点では、ASP.NET AJAX フレームワークはまだ完全には読み込まれていません。 したがって、launchModal() 関数は、ModalPopup コントロールを後で表示する必要がある変数を設定するだけです。

<script type="text/javascript">
 var launch = false;
 function launchModal() 
 {
 launch = true;
 }

pageLoad() JavaScript 関数は、ASP.NET AJAX が完全に読み込まれた後に実行される特別な関数です。 したがって、この関数にコードを追加して ModalPopup コントロールを表示しますが、これは以前に launchModal() が呼び出された場合のみとなります。

function pageLoad() 
 {
 if (launch) 
 {
 $find("mpe").show();
 }
 }
</script>

$find() 関数は、ページ上で名前付き要素を検索し、サーバー側 ID をパラメータとして受け取ります。 したがって、$find("mpe") は ModalPopup コントロールのクライアント表現を返します。show() メソッドによりポップアップが表示されます。

The modal popup appears when either of the buttons is clicked

いずれかのボタンがクリックされるとモーダル ポップアップが表示されます (クリックしてフルサイズの画像を表示します)。