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

更新:2007 年 11 月

您可以通过以下方法自定义多个 ASP.NET 登录控件的内容:指定控件模板并将自己的控件添加到控件的用户界面 (UI),或者替换或移除控件的用户界面不需要的可选控件。

还可以使用登录控件的样式属性以及主题和外观来定制控件的外观。有关更多信息,请参见特定控件的成员和 ASP.NET 主题和外观概述

可自定义的登录控件

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

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

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

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

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

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

可以替换多个 ASP.NET 登录控件在各自的模板中使用的输入和显示控件。每个模板都有必须包含在模板中的控件以及可选控件。可使用控件的 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 方法。下表列出了各个模板及其关联的容器属性。

例如,如果要在 CreateUserWizard 控件的 CreateUserStep 步骤的 ContentTemplate 模板中包含一个 ID 为 TimeZoneList 的 DropDownList 控件,您可以通过调用 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 应用程序以使用成员资格

参考

ASP.NET 登录控件概述