SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(InputMan)

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

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

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

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;
        }
    }
}

次のページ
Maskコントロールを使った入力処理

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(InputMan)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4213 2010/02/16 22:03

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング