共用方式為


自訂 ASP.NET 登入控制項的外觀

更新:2007 年 11 月

您可以自訂數個 ASP.NET 登入控制項的內容;自訂的方法是指定控制項範本,並將自己的控制項加入至控制項的使用者介面 (UI),或是取代或移除控制項 UI 不需要的選擇性控制項。

也可以使用登入控制項的樣式屬性 (Property) 以及佈景主題和面板,量身訂做控制項的外觀。如需詳細資訊,請參考特定控制項的成員和 ASP.NET 佈景主題和面板概觀

可自訂的登入控制項

您可以自訂登入控制項的內容,在此登入控制項中可以使用範本取代現有的控制項 UI。這包含 LoginPasswordRecoveryCreateUserWizardChangePassword 控制項。下表列出可供每一個控制項自訂的範本。

在登入控制項範本中指定控制項

您可以在登入控制項範本中包含其他控制項和命令按鈕,也可以用自己的控制項和命令按鈕來替換。

在登入控制項範本中替換命令按鈕

您可以使用任何控制項當做登入控制項範本中的命令按鈕。但是,為了讓登入控制項可以辨認命令,該命令必須反昇一個包含繼承自 CommandEventArgs 類別的命令引數的事件。命令按鈕必須指定 CommandEventArgs 類別的 CommandName 屬性值,以辨識登入控制項將要執行哪個命令。下表列出 CommandName 屬性的有效值及其相關的登入控制項範本。

在登入控制項範本中替換控制項

您可以在各自的範本中替換由數個 ASP.NET 登入控制項所使用的輸入和顯示控制項。每個範本都有必須內含在範本中的控制項及選擇性控制項。會使用控制項的 ID 屬性來辨識必要性和選擇性控制項。如果範本不包含 ID 屬性設定為必要控制識別項的控制項,或者是該控制項並未實作適當的介面,則 ASP.NET 登入控制項將會擲回例外狀況。

下表會依照其 ID 屬性列出範本和必要的控制項。

  • Login.LayoutTemplate
    UserName:所要登入的使用者帳戶名稱。這個控制項為必要項且必須實作 IEditableTextControl 介面。

    Password:所要登入的使用者密碼。這個控制項為必要項且必須實作 IEditableTextControl 介面。

    RememberMe:值為 true 會在永久性的 Cookie 中儲存驗證語彙基元,而值為 false 則會在工作階段 (Session) 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 控制項,即可參考 DropDownList 控制項,其做法便是呼叫 CreateUserStep 屬性之 ContentTemplateContainer 容器的 FindControl 方法,如以下範例所示。

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 登入控制項概觀