ASP.NET ログイン コントロールの外観のカスタマイズ
更新 : 2007 年 11 月
いくつかの ASP.NET ログイン コントロールのコンテンツは、コントロール テンプレートを指定し、独自のコントロールをコントロールのユーザー インターフェイス (UI) に追加したり、コントロールの UI に不要なオプションのコントロールを置換したり削除したりしてカスタマイズできます。
テーマやスキンだけでなく、ログイン コントロールのスタイル プロパティを使用して、コントロールの外観を調整することもできます。詳細については、特定のコントロールのメンバ、および「ASP.NET のテーマとスキンの概要」を参照してください。
カスタマイズできるログイン コントロール
テンプレートを使用して既存のコントロール UI を置換できるログイン コントロールは、コンテンツをカスタマイズできます。たとえば、Login、PasswordRecovery、CreateUserWizard、ChangePassword などのコントロールです。各コントロールのカスタマイズ可能なテンプレートを次の表に示します。
Login
LayoutTemplate テンプレートを使用して、ログインするユーザー名とパスワードを取得する別のコントロールを指定します。PasswordRecovery
UserNameTemplate テンプレートを使用して、パスワードを復元するユーザー名を取得する別のコントロールを指定します。QuestionTemplate テンプレートを使用して、RequiresQuestionAndAnswer プロパティが true の場合にパスワードの質問を取得する別のコントロールを指定します。
SuccessTemplate テンプレートを使用して、ユーザーのパスワードが正常に復元されたときに表示する別のコントロールを指定します。
CreateUserWizard
CreateUserStep ステップの ContentTemplate テンプレートを使用して、新規ユーザー アカウントの作成に必要なユーザー名やパスワードなどの情報を取得する別のコントロールを指定します。CompleteStep ステップの ContentTemplate テンプレートを使用して、ユーザーの作成操作の完了時に表示する別のコントロールを指定します。
ChangePassword
ChangePasswordTemplate テンプレートを使用して、パスワードを変更するユーザーのユーザー名、現在のパスワード、および新しいパスワードを取得する別のコントロールを指定します。SuccessTemplate テンプレートを使用して、ユーザーのパスワードが正常に変更されたときに表示する別のコントロールを指定します。
ログイン コントロール テンプレートのコントロールの指定
既定のコントロールやコマンド ボタンを独自のものと置換するだけでなく、ログイン コントロール テンプレートにコントロールやコマンド ボタンを追加して含めることもできます。
ログイン コントロール テンプレートのコマンド ボタンの置換
任意のコントロールをログイン コントロール テンプレートのコマンド ボタンとして使用できます。ただし、ログイン コントロールがコマンドを認識するには、コマンド コントロールは、CommandEventArgs クラスから継承されるイベント引数が指定されたイベントを通知する必要があります。コマンド ボタンは、ログイン コントロールによって実行されるコマンドを識別する CommandEventArgs クラスの CommandName プロパティの値を指定する必要があります。CommandName プロパティの有効値と関連するログイン コントロールのテンプレートを次の表に示します。
Login.LayoutTemplate
Login - ユーザー資格情報を検証し、ユーザーをログインします。PasswordRecovery.UserNameTemplate
Submit - パスワードを復元するユーザー名を取得し、ログイン プロセスを継続します。PasswordRecovery.QuestionTemplate
Submit - ユーザーのパスワードの解答を取得し、ユーザーのパスワードを復元します。CreateUserWizard.CreateUserStep, CustomNavigationTemplate
CreateUser - ユーザーが指定した値を取得し、新規ユーザー アカウントを作成します。Cancel - ユーザーの作成操作を終了します。
CreateUserWizard.CompleteStep, ContentTemplate
Continue - ユーザーが ContinueDestinationPageUrl ページに移動できるようにします。ChangePassword.ChangePasswordTemplate
ChangePassword - ユーザーが指定した値を取得し、パスワードを変更します。Cancel - パスワードの変更操作を終了します。
ChangePassword.SuccessTemplate
Continue - ユーザーが ContinueDestinationPageUrl ページに移動できるようにします。
ログイン コントロール テンプレートのコントロールの置換
いくつかの ASP.NET ログイン コントロールで使用する入力コントロールや表示コントロールは、それぞれのテンプレート内で置換できます。各テンプレートには、テンプレートおよびオプションのコントロールの両方に含める必要のあるコントロールがあります。必須コントロールとオプションのコントロールは、コントロールの ID プロパティを使用して識別します。ID プロパティが必須のコントロール ID に設定されたコントロールがテンプレートに含まれていない場合や、コントロールに適切なインターフェイスが実装されていない場合は、ASP.NET ログイン コントロールが例外をスローします。
テンプレートとその ID プロパティに必須のコントロールを次の表に示します。
Login.LayoutTemplate
UserName - ログインするユーザーのアカウント名。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。Password - ログインするユーザーのパスワード。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
RememberMe - true の場合は認証トークンを永続的な Cookie に格納し、false の場合は認証トークンをセッション Cookie に格納します。このコントロールは省略可能で、ICheckBoxControl インターフェイスを実装している必要があります。
FailureText - ログイン エラー メッセージを表示します。このコントロールは省略可能で、ITextControl インターフェイスを実装している必要があります。
PasswordRecovery.UserNameTemplate
UserName - パスワードを復元するユーザーのアカウント名。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。FailureText - パスワード復元のエラー メッセージを表示します。このコントロールは省略可能で、ITextControl インターフェイスを実装している必要があります。
PasswordRecovery.QuestionTemplate
UserName - パスワードを復元しているユーザーのアカウント名を表示します。このコントロールは省略可能で、ITextControl インターフェイスを実装している必要があります。Question - パスワードを復元しているユーザーのパスワードの質問。このコントロールは省略可能で、ITextControl インターフェイスを実装している必要があります。
Answer - パスワードを復元しているユーザーのパスワードの解答。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
FailureText - パスワード復元のエラー メッセージを表示します。このコントロールは省略可能で、ITextControl インターフェイスを実装している必要があります。
CreateUserWizard.CreateUserStep, ContentTemplate
UserName - 作成するユーザー アカウントのアカウント名。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。Password - 作成するユーザー アカウントのパスワード。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
ConfirmPassword - パスワードと一致する必要のある確認値。このコントロールは省略可能で、IEditableTextControl インターフェイスを実装している必要があります。
Question - 作成するユーザーのパスワードの質問。RequiresQuestionAndAnswer プロパティが true の場合、このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
Answer - 作成するユーザーのパスワードの解答。RequiresQuestionAndAnswer プロパティが true の場合、このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
Email - 作成するユーザー アカウントの電子メール アドレス。RequiresUniqueEmail プロパティが true の場合、このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
ErrorMessage - ユーザー アカウント作成のエラー メッセージを表示します。このコントロールは省略可能で、ITextControl インターフェイスを実装している必要があります。
ChangePassword.ChangePasswordTemplate
UserName - 作成するユーザー アカウントのアカウント名。DisplayUserName プロパティが true の場合、このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。CurrentPassword - ユーザー アカウントの現在のパスワード。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
NewPassword - ユーザー アカウントの新しいパスワード。このコントロールは必須で、IEditableTextControl インターフェイスを実装している必要があります。
ConfirmPassword - 新しいパスワードと一致する必要のある確認値。このコントロールは省略可能で、IEditableTextControl インターフェイスを実装している必要があります。
FailureText - ユーザー アカウント作成のエラー メッセージを表示します。このコントロールは省略可能で、ITextControl インターフェイスを実装している必要があります。
ログイン コントロール テンプレートのコントロールの参照
ログイン コントロール テンプレートのコントロールを参照するには、目的のコントロール テンプレートのコンテナの FindControl メソッドを呼び出します。テンプレートおよび関連するコンテナのプロパティを次の表に示します。
たとえば、次の例に示すように、ID が TimeZoneList の DropDownList コントロールを CreateUserWizard コントロールの CreateUserStep ステップの ContentTemplate テンプレートに含めると、CreateUserStep プロパティの ContentTemplateContainer コンテナの FindControl メソッドを呼び出して DropDownList コントロールを参照できます。
Protected Sub CreateUserWizard1_CreatedUser(sender As Object, e As EventArgs)
Dim timeZoneList As DropDownList = _
CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("TimeZoneList"), DropDownList)
End Sub
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
DropDownList timeZoneList =
(DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("TimeZoneList");
}
参照
概念
ASP.NET アプリケーションの設定によるメンバシップの使用