連載

ASP.NET 2.0が変えるWebアプリ開発の世界

第3回 ASP.NET 2.0のログイン管理とウィザード・ページ

山田 祥寛
2004/11/13
Page1 Page2 Page3 Page4

●ウィザード式の画面を一元管理するWizardコントロール

 ASP.NETに限らず、Webアプリケーションを構築するうえで必ずといってよいほど問題となるのが、ウィザードのように複数ページでひとまとまりのページを作成するような局面だろう。

 いまさら特筆するまでもなく、Webアプリケーションが採用するHTTPはステートレス(状態を持たない)なプロトコルだ。つまり、いくら論理的に関連したページであろうとも、その2つのページでそれぞれに発生したリクエストは何ら関係のない「独立した」処理であると見なされる。ページBはページAで発生したいかなるイベントも認識することはできないのだ。

 ASP.NETでは、こうしたHTTPの制約を補うために、ビュー・ステートやセッションといった仕組みを提供することで、疑似的に複数のページをつながりあるものとしてまとめているわけである。しかし、これはあくまで疑似的なものにすぎない。例えば、ウィザード式の流れ手順が必要なページにおいて、もしもエンド・ユーザーが途中ページからアクセスしたとしても、これを防ぐことは容易ではない。.NET TIPS「[ASP.NET]途中ページへの直接アクセスを防ぐには?」で紹介したような仕組みを自前で用意する必要があるのだ。

 しかし、ASP.NET 2.0で新たに用意されたWizardコントロールを利用すれば、ウィザードのように論理的にひと連なりの流れを持ったページ群を管理するのも容易にできる。論より証拠、まずはWizardコントロールを使った簡単なページの例を見てみることにしよう。

○Wizardコントロールでウィザード式の画面を設計

 まずは、フォーム・デザイナでWizardコントロールを配置してみよう。ほかのコントロール同様、コントロール右上から[共通タスク]メニューを表示させることができるので、ここからフォーマットの選択やウィザード・ステップ(ウィザードの設定手順)の追加/削除を行う。

Wizardコントロールを利用した.aspxファイルの例
[共通タスク]から複数のウィザード・ステップを編集することができる。ウィザードの各ステップを編集するには、[共通タスク]から[WizardStepsの追加と削除]を選択すればよい。

 例えば、ここでは既定で用意された2つのステップに、もう1つステップを加え、合計3つのステップからなるウィザード画面を作成してみよう。ステップの追加/削除、および、編集は「WizardStepコレクション・エディタ」から行うことができる。

WizardStepのプロパティ編集
ウィザードの各ステップに関する属性は、この「WizardStepコレクション・エディタ」から行うことができる。

 ウィザード・ステップ(WizardStep)に対して設定可能なプロパティは以下のとおり。

プロパティ 概要
Title ステップのタイトル
AllowReturn 前のステップに戻ることを許すかどうか
StepType ステップの種類(Auto[自動]/Complete/Finish/Start/Step)
WizardStepの主要なプロパティ

 各ステップのレイアウトは、フォーム・デザイナ上で編集することができる。後述するMultiViewコントロール/Viewコントロールとは異なり、フォーム・デザイナ上には常に1つのステップしか表示することができない。編集したいステップを切り替えたい場合には、Wizardコントロール左部のリンクをクリックするか、[共通タスク]メニューから[ステップ]を選択すればよい。ここでは、それぞれのステップにTextBox1〜3という名前で、1つずつTextBoxコントロールを配置しておくことにしよう。

 Wizardコントロール上の各ステップで入力された内容は、1つのWebフォーム上に複数のサーバ・コントロールを直接に配置した場合とまったく同じ要領で取得できる。ここでは、Wizardコントロールの各ステップで入力された内容を[完了]ボタンをクリックしたタイミングでブラウザに出力する、最も単純なコードを記述してみよう。もちろん、本来のアプリケーションでは、このタイミングでデータベースに入力内容を登録するなどの処理が発生するはずだ。

Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs)
  Response.Write("名前:" & TextBox1.Text & "<br />")
  Response.Write("年齢:" & TextBox2.Text & "<br />")
  Response.Write("E-Mail:" & TextBox3.Text & "<br />")
End Sub
Wizardコントロールを利用したサンプル・プログラム(.aspxファイル)
[完了]ボタンをクリックすると、ウィザード内で入力された内容をブラウザに出力する。

 以上の.aspxファイルの実行結果は以下のとおり。

Wizardコントロールを利用した.aspxファイルの実行例
[完了]ボタンをクリックしたタイミングで、Wizard1_FinishButtonClickプロシージャが実行され、ウィザード内の各ステップで入力された内容をブラウザに出力する。

 なお、Wizardコントロールには、FinishButtonClickイベントのほかに、ActiveStepChanged、CancelButtonClick、NextButtonClick、PreviousButtonClick、SideBarButtonClickなどのイベントが用意されており、ウィザード内各所のタイミングで任意の処理を実行することも可能だ。


 INDEX
  ASP.NET 2.0が変えるWebアプリ開発の世界
  第3回 ASP.NET 2.0のログイン管理とウィザード・ページ
    1.ユーザー管理を簡略化するメンバシップ・フレームワーク
    2.メンバシップ・フレームワークに含まれるセキュリティ・コントロール
  3.ウィザード式の画面を一元管理するWizardコントロール
    4.MultiView&Viewコントロールによるマルチビュー画面の構築
 
インデックス・ページヘ  「ASP.NET 2.0が変えるWebアプリ開発の世界」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間