Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

入力処理機能を持ったWebページを作成する

InputMan for ASP.NET 3.0J の検証アクションエクステンダ、マスク、メッセージボックスコントロールを使ったWebページの作成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/07/29 14:00
目次

MessageBoxコントロールについて

 InputMan for ASP.NET 3.0Jには、JavaScriptのalert、confirmおよびpromptメソッドにより表示される各種ダイアログと同様のダイアログを、サーバ側コントロールとして表示できる「メッセージボックス(MessageBox)」コントロールがあります。

 このコントロールを使うと、入力エラーをWindowsフォームと同じようにメッセージボックスで表示させることができます。

 使用できるメッセージボックスのタイプは次の3種類で、Windowsフォームのようにいくつものタイプのメッセージボックスを表示できるわけではありませんが、押されたボタンに応答してイベント処理を実行させることができます。

MessageBoxコントロールで使用できるメッセージボックスのタイプ(ヘルプファイルより抜粋)
MessageBoxコントロールで使用できるメッセージボックスのタイプ(ヘルプファイルより抜粋)

 使い方は簡単で、WindowsフォームのMessageBoxクラスと同様、Showメソッドを実行します。引数は2つで、メッセージ文字列と表示させるメッセージボックスのタイプをDialogType列挙型のメンバで指定します。

DialogType列挙体のメンバ
メンバ名 説明
0 - Alert Javascriptのalertメソッドで表示される警告メッセージボックスを表示します。
1 - Confirm Javascriptのconfirmメソッドで表示される確認メッセージボックスを表示します。
2 - Prompt JavascriptのPromptメソッドで表示される入力メッセージボックスを表示します。

メッセージボックスを使った処理

 今回は、パスワードを設定するテキストボックスを例にとり、このメッセージボックスを使ってみました。TextBoxはMaxLengthを「8」文字に設定し、8文字以上入力できないようにしていますが、「6文字以上」という最低文字数の制限は設定できないため、6文字未満しか入力されなかった場合にメッセージボックスで警告を表示させます。

 処理は、「入力」ボタンのClickイベントハンドラで行い、StringクラスのLengthプロパティを使用してTextBoxの入力データから文字数を取得し、文字数が6未満であればAlertタイプのメッセージボックスを表示します。

 そして、6文字以上入力されていれば、確認のメッセージボックスを表示します。これは、「OK」「キャンセル」の2つのボタンを持ったConfirmタイプのメッセージボックスを使います。

Visual Basic
Imports GrapeCity.Web.Input.Core

Partial Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Dim pass As String = Me.TextBox1.Text

        If pass.Length < 6 Then
            MessageBox1.Show("文字数が不足しています。", DialogType.Alert)
        ElseIf pass.Length >= 6 Then
            MessageBox1.Show("この内容でよろしいですか?。", DialogType.Confirm)
        End If

    End Sub
C#
using GrapeCity.Web.Input.Core;

namespace valid_web_cs
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Button1_Click(object sender, EventArgs e)
        {
            string pass = TextBox1.Text;

            if(pass.Length < 6){  
                MessageBox1.Show("文字数が不足しています。", DialogType.Alert);
            }
            else if (pass.Length >= 6)
            {
                MessageBox1.Show("この内容でよろしいですか?。", DialogType.Confirm);
            }
        }

MessageBoxコントロールのイベント処理

 MessageBoxコントロールがWindowsフォームのMessageBoxクラスと違うのは、メッセージボックスのボタンが押された時の処理です。MessageBoxクラスでは押されたボタンの種類がShowメソッドの戻り値で返されましたが、MessageBoxコントロールではMessageBoxコントロールのResponseイベントハンドラで処理を行うことになります。

 Confirmタイプのメッセージボックスでは、「OK」と「キャンセル」のどちらのボタンが押されたのかによって処理を振り分けます。

 ユーザーがメッセージボックスの[OKボタン]を押すと、MessageBoxコントロールにはResponseイベントが発生します。そして、[OKボタン]が押されるとこのイベントパラメータのConfirmedプロパティにTrueが設定されます。

 そこで、まず[OKボタン]が押されたのかどうかをチェックし、押されたのであれば設定した旨のAlertタイプのメッセージボックスを表示し、TextBoxコントロールを無効にして入力できないようにします。[キャンセルボタン]が押された場合は何もせず、再度パスワードの入力を受けつけます。

Visual Basic
Protected Sub MessageBox1_Response(ByVal sender As Object, ByVal e As GrapeCity.Web.Input.IMMessageBox.ResponseEventArgs) Handles MessageBox1.Response
    If e.DialogType = DialogType.Confirm Then
        If e.Confirmed Then
            MessageBox1.Show("パスワードを設定しました", DialogType.Alert)
            Me.TextBox1.Enabled = False
        End If
    End If
End Sub
C#
protected void MessageBox1_Response(object sender, GrapeCity.Web.Input.IMMessageBox.ResponseEventArgs e)
{
    if (e.DialogType == DialogType.Confirm)
    {
        if (e.Confirmed)
        {
            MessageBox1.Show("パスワードを設定しました", DialogType.Alert);
            TextBox1.Enabled = false;
        }
    }
}

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2010/02/16 22:03 「サンプルプログラム実行時の注意事項」を一部修正しました。

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

バックナンバー

連載:ComponentZine(InputMan)

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5