.NET TIPS [ASP.NET]ログイン・コントロールのレイアウトをテンプレート定義するには?[2.0のみ、C#、VB]山田 祥寛2006/06/02 |
|
|
「TIPS:[ASP.NET]セキュリティ・コントロールでログイン機能を作成するには?」でも紹介したように、ASP.NET 2.0ではセキュリティ・コントロールを利用することで、ログイン・ページやパスワードの問い合わせのような定型的な機能を限りなくコーディングレスで実現できる。Visual Studio 2005(以降、VS 2005)のオートフォーマット機能を利用すれば、それこそレイアウトやデザインを意識する必要すらない。コントロールを貼り付け、あらかじめ用意されたデザインを選択するだけで、それなりに見栄えがするページができてしまうというわけだ。
もっとも、アプリケーションを構築するうえでは「手軽なだけでは済まないよ」というご意見もあるかもしれない。例えば、ログイン・ページのレイアウト1つを取っても、アプリケーション内でのデザインの統一性を考慮すれば、お仕着せのものではなく、一からレイアウトを決定したいというケースも少なくないだろう。
そのような場合には、ログイン・コントロールが使えず、一からログインの仕組みを作り直さなければならないのか。いやいや、そのようなことはない。ログイン・コントロール(に限らず、ASP.NETのサーバ・コントロールの多く)には、テンプレートという仕組みが備わっており、あらかじめ決められたいくつかの緩いルールにさえ従っていれば、自前で用意したテンプレートを適用することが可能だ。
もちろん、メンバシップ・フレームワークへのアクセス(認証処理やパスワード検索、通知メールの生成などの処理)は、コントロール側で管理してくれるので、標準的な認証機能を実現する分には一切のコーディングは必要ないというわけだ。
Loginコントロールのテンプレート化
具体的な例として、本稿では前掲のTIPSで作成したLoginコントロールをテンプレート化してみることにしよう。
VS 2005を使用している場合、テンプレートを作成することはさほどに難しくない。Loginコントロールの標準的なプロパティを利用して、大まかな外観を作成したうえで、右上のスマートタグをクリックすると開く[Login タスク]メニューから[テンプレートに変換]を選択するだけだ。
これによって、現在のLoginコントロールの内容が展開され、テンプレートとして編集することが可能になる。
テンプレート化されたLoginコントロール |
[Login タスク]メニューから[テンプレートに変換]を選択する。一度、テンプレート化されたコントロールを元に戻すには、同じくタスクメニューから[リセット]を選択すればよい。 |
以下が[テンプレートに変換]を行うことによりVS 2005によって自動生成されたコードだ(ただし、<%--〜--%>は筆者によるコメント)。
|
|
VS 2005によって自動生成されたログイン・コントロールのテンプレート・コード |
テンプレート化されたLoginコントロール内の個々の部品は、フォーム・デザイナ上から通常のWebフォームを編集するのと同様の要領で編集が可能だ。用途に応じて、必要なコンテンツを追加したり、既存のコントロールを移動したりすることができる。
編集に際してポイントとなるのは、上記コード内で示した太字の部分だけだ。ごく緩いID値やコマンド名の命名規則にさえ則っていれば、自由にテンプレートを編集できるのがお分かりになるだろう。
以下に、コントロールをテンプレート化するうえで最低限守らなければならないID値/コマンド名の命名規則をまとめておく。逆に、テンプレート内では以下の命名規則にさえ従っていれば、そのほかの部分は自由に設計して構わない。
ID値、CommandName | 概要 | 必須 |
UserName | ユーザー名を表す入力ボックス |
○
|
Password | パスワードを表す入力ボックス |
○
|
RememberMe | 永続クッキーの有効/無効を表すチェック・ボックス |
×
|
FailureText | エラー・メッセージを出力するラベル |
×
|
Login | ログイン・ボタン(コマンド名) |
×
|
Loginコントロールのテンプレートで利用可能な要素(命名規則) |
ちなみに、Loginコントロールとまったく同じ要領で、そのほかのログイン・コントロールについてもレイアウトをテンプレート化することが可能だ。
最後に、主なログイン・コントロールで利用可能な主なテンプレートとその中で利用可能なコントロール要素の命名規則をまとめておこう。
コントロール | テンプレートのビュー名 | ID値、もしくはCommandName値 | 概要 |
ChangePassword | パスワードの変更 | CurrentPassword* | パスワード(現在)を表す入力ボックス |
NewPassword* | パスワード(変更後)を表す入力ボックス | ||
ConfirmNewPassword | パスワード(変更後確認)を表す入力ボックス | ||
FailureText | エラー・メッセージを出力するラベル | ||
ChangePassword | [パスワードの変更]ボタン | ||
Cancel | [キャンセル]ボタン | ||
UserName** | ユーザー名を表す入力ボックス(DisplayUserNameプロパティがTrueの場合のみ表示) | ||
正常に完了 | Continue | [続行]ボタン | |
CreateUserWizard | ユーザーの作成ステップ | UserName* | ユーザー名を表す入力ボックス |
Password** | パスワードを表す入力ボックス | ||
ConfirmPassword | パスワード(確認)を表す入力ボックス | ||
Email** | E-Mailアドレスを表す入力ボックス | ||
Question | 秘密の質問を表す入力ボックス | ||
Answer | 秘密の解答を表す入力ボックス | ||
ErrorMessage | エラー・メッセージを出力するラベル | ||
CreateUser | [ユーザーの作成]ボタン | ||
Cancel | [キャンセル]ボタン | ||
PasswordRecovery | ユーザー名入力 | UserName | ユーザー名を表す入力ボックス |
Submit | [送信]ボタン | ||
質問 | Answer* | 「返答」(=秘密の質問に対する解答)入力ボックス | |
Submit | [送信]ボタン | ||
ログイン・コントロールの各テンプレートにおける命名規則 | |||
*は必須要素、**はDisplayUserNameプロパティがTrueの場合のみ必須、の項目を表す。 |
ただし、「TIPS:[ASP.NET]セキュリティ・コントロールでログイン機能を作成するには?」でも示したように、ログイン・コントロールではスタイルやレイアウトを定義するための多くのプロパティを公開しており、プロパティ設定を行うだけでもかなり柔軟に見栄えをカスタマイズすることができる。
後々の保守性を考慮しても、安易にテンプレート化するのではなく、まずはプロパティ設定で賄えないかどうかを検討するようにしていただきたい。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Webフォーム 処理対象:クライアント・コールバック 使用ライブラリ:ICallbackEventHandlerインターフェイス(System.Web.UI名前空間) 関連TIPS:[ASP.NET]セキュリティ・コントロールでログイン機能を作成するには? |
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|