`
isiqi
  • 浏览: 16066546 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET - 自定义 ASP.NET 登录控件的外观

阅读更多

您可以通过以下方法自定义多个 ASP.NET 登录控件的内容:指定控件模板并将自己的控件添加到控件的用户界面 (UI),或者替换或移除控件的用户界面不需要的可选控件。还可以使用登录控件的样式属性以及主题和外观来定制控件的外观。

一、可自定义的登录控件

对于可以使用模板替换现有控件用户界面的任何登录控件,您可以自定义它的内容。这些控件包括 LoginPasswordRecoveryCreateUserWizard ChangePassword 控件。下表列出了可用于自定义各个控件的模板。

1.1Login

·使用 LayoutTemplate 模板指定不同的控件以检索用于登录的用户名和密码。

1.2PasswordRecovery

·使用 UserNameTemplate 模板指定不同的控件以检索要为其恢复密码的用户名。

·使用 QuestionTemplate 模板指定不同的控件以检索 RequiresQuestionAndAnswer 属性为 true 时的密码提示问题。

·使用 SuccessTemplate 模板指定不同的控件,它们将在成功恢复用户密码后出现。

1.3CreateUserWizard

·使用 CreateUserStep 步骤的 ContentTemplate 模板指定不同的控件以检索用户名、密码以及创建新的用户帐户所需的其他信息。

·使用 CompleteStep 步骤的 ContentTemplate 模板指定不同的控件,它们将在创建用户操作完成后出现。

1.4ChangePassword

·使用 ChangePasswordTemplate 模板指定不同的控件以检索要更改其密码的用户的用户名、当前密码和新密码。

·使用 SuccessTemplate 模板指定不同的控件,它们将在成功更改用户密码后出现。

二、在登录控件模板中指定控件

您可以在登录控件模板中包含其他控件和命令按钮,也可以用自己的控件和命令按钮替换默认的控件和命令按钮。

2.1、在登录控件模板中替换命令按钮

在登录控件模板中,可以将任何控件用作命令按钮。但是,要使登录控件能识别命令,命令控件必须向上冒泡一个事件,该事件包含从 CommandEventArgs 类继承的事件参数。命令按钮必须为 CommandEventArgs 类的 CommandName 属性指定一个值,这个类标识登录控件将执行的命令。下表列出了 CommandName 属性的有效值及其相关的登录控件模板。

1Login.LayoutTemplate

Login - 验证用户凭据并让用户登录。

2PasswordRecovery.UserNameTemplate

Submit - 检索要为其恢复密码的用户名并继续登录进程。

3PasswordRecovery.QuestionTemplate

Submit - 检索用户设定的密码提示问题答案并恢复用户的密码。

4CreateUserWizard.CreateUserStep, CustomNavigationTemplate

CreateUser - 检索用户提供的值并创建新的用户帐户。

Cancel - 终止创建用户操作。

5CreateUserWizard.CompleteStep, ContentTemplate

Continue - 将用户定位至 ContinueDestinationPageUrl 页面。

6ChangePassword.ChangePasswordTemplate

ChangePassword - 检索用户提供的值并更改密码。

Cancel - 终止更改密码操作。

7ChangePassword.SuccessTemplate

Continue - 将用户定位至 ContinueDestinationPageUrl 页面。

2.2、在登录控件模板中替换控件

可以替换多个 ASP.NET 登录控件在各自的模板中使用的输入和显示控件。每个模板都有必须包含在模板中的控件以及可选控件。可使用控件的 ID 属性来标识必需控件和可选控件。如果某个模板不包含 ID 属性设置为必需的控件标识符的控件,或是该控件未实现适当的接口,ASP.NET 登录控件将引发异常。

下表按 ID 属性列出了各个模板及其所需的控件。

1Login.LayoutTemplate

UserName - 要登录的用户的帐户名。这个控件是必需的并且必须实现 IEditableTextControl 接口。

Password - 要登录的用户的密码。这个控件是必需的并且必须实现 IEditableTextControl 接口。

RememberMe - 如果为 true,则将身份验证令牌存储在持久性 Cookie 中;如果为 false,则将身份验证令牌存储在会话 Cookie 中。这个控件是可选的并且必须实现 ICheckBoxControl 接口。

FailureText - 显示登录失败消息。这个控件是可选的并且必须实现 ITextControl 接口。

2PasswordRecovery.UserNameTemplate

UserName - 要为其恢复密码的用户的帐户名。这个控件是必需的并且必须实现 IEditableTextControl 接口。

FailureText - 显示密码恢复失败消息。这个控件是可选的并且必须实现 ITextControl 接口。

3PasswordRecovery.QuestionTemplate

UserName - 显示正在为其恢复密码的用户的帐户名。这个控件是可选的并且必须实现 ITextControl 接口。

Question - 正在为其恢复密码的用户设定的密码提示问题。这个控件是可选的并且必须实现 ITextControl 接口。

Answer - 正在为其恢复密码的用户设定的密码提示问题答案。这个控件是必需的并且必须实现 IEditableTextControl 接口。

FailureText - 显示密码恢复失败消息。这个控件是可选的并且必须实现 ITextControl 接口。

4CreateUserWizard.CreateUserStep, ContentTemplate

UserName - 要创建的用户帐户的帐户名。这个控件是必需的并且必须实现 IEditableTextControl 接口。

Password - 要创建的用户帐户的密码。这个控件是必需的并且必须实现 IEditableTextControl 接口。

ConfirmPassword - 必须与密码匹配的确认值。这个控件是可选的并且必须实现 IEditableTextControl 接口。

Question - 要创建的用户设定的密码提示问题。如果 RequiresQuestionAndAnswer 属性为 true,则这个控件是必需的并且必须实现 IEditableTextControl 接口。

Answer - 要创建的用户设定的密码提示问题答案。如果 RequiresQuestionAndAnswer 属性为 true,则这个控件是必需的并且必须实现 IEditableTextControl 接口。

Email - 要创建的用户帐户的电子邮件地址。如果 RequiresUniqueEmail 属性为 true,则这个控件是必需的并且必须实现 IEditableTextControl 接口。

ErrorMessage - 显示创建用户帐户失败消息。这个控件是可选的并且必须实现 ITextControl 接口。

5ChangePassword.ChangePasswordTemplate

UserName - 要创建的用户帐户的帐户名。如果 DisplayUserName 属性为 true,则这个控件是必需的并且必须实现 IEditableTextControl 接口。

CurrentPassword - 用户帐户的当前密码。这个控件是必需的并且必须实现 IEditableTextControl 接口。

NewPassword - 用户帐户的新密码。这个控件是必需的并且必须实现 IEditableTextControl 接口。

ConfirmPassword - 必须与新密码匹配的确认值。这个控件是可选的并且必须实现 IEditableTextControl 接口。

FailureText - 显示创建用户帐户失败消息。这个控件是可选的并且必须实现 ITextControl 接口。

2.3、在登录控件模板中引用控件

若要在登录控件模板中引用某个控件,可以调用控件模板的容器的 FindControl 方法。下表列出了各个模板及其关联的容器属性。

Login.LayoutTemplate

LayoutTemplate

PasswordRecovery.UserNameTemplate

UserNameTemplateContainer

PasswordRecovery.QuestionTemplate

QuestionTemplateContainer

PasswordRecovery.SuccessTemplate

SuccessTemplateContainer

CreateUserWizard.CreateUserStep

ContentTemplateContainer

ChangePassword.ChangePasswordTemplate

ChangePasswordTemplateContainer

ChangePassword.SuccessTemplate

SuccessTemplateContainer

例如,如果要在 CreateUserWizard 控件的 CreateUserStep 步骤的 ContentTemplate 模板中包含一个 ID TimeZoneList DropDownList 控件,您可以通过调用 CreateUserStep 属性的 ContentTemplateContainer 容器的 FindControl 方法来引用 DropDownList 控件,如下面的示例所示。

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)

{

DropDownList timeZoneList =

(DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("TimeZoneList");

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics