【ASP.NET】サーバサイドの処理中に確認ダイアログを表示

目的

 * サーバサイドの処理中に確認ダイアログを表示し、「OK」「キャンセル」で処理を分ける。

概要

1) 画面に、Buttonコントロールを一つ配置。(サンプルでは、名前をButton11とする)
2) CSSにて、Button11の表示を消します。
3) 処理途中でRegisterStartupScriptでJavascriptを表示する。
4) OKだったら、非表示のボタンButton11をjavascriptから呼び出し、以降の処理を行う
 (キャンセルだったら何もしない)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=45981&forum=7

サンプル

デザイン部

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm5.aspx.vb" Inherits="WebApplication1.WebForm5" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="">http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
      .hide  {
        visibility:hidden;
    }
    </style>
    <script type="text/javascript"> 
      <!--
        function ComfirmDialog(confirmMessage, buttonClientID) {
            if (window.confirm(confirmMessage)) {
                var button = document.getElementById(buttonClientID);
                button.click();
            }
        }
      -->
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="クリア" />
        <asp:Button ID="Button11" runat="server" Text="隠しボタン" 
            CssClass="hide" />
        <br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
</html>

コード部

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If Not String.IsNullOrEmpty(Me.TextBox1.Text) OrElse _
        Not String.IsNullOrEmpty(Me.TextBox2.Text) Then
        Dim script As String = String.Format("ComfirmDialog('{0}', '{1}');", _
                                             "クリアしますがいいですか?", _
                                             Me.Button11.ClientID)

        Me.ClientScript.RegisterStartupScript(Me.GetType(), "clientScriptKey", script, True)

    End If

End Sub

' 確認ダイアログでOKだったら、実行する処理を記述
Protected Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
    Me.TextBox1.Text = String.Empty
    Me.TextBox2.Text = String.Empty
End Sub

参考文献

http://atamoco.boy.jp/asp/20101014_3.php
http://dobon.net/vb/bbs/log3-36/21892.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23286&forum=7