CreateUserWizard 是 ASP.NET 2.0 內建的會員註冊向導控件,封裝了完整的使用者建立流程。依據專案需求的彈性程度,主要有三種使用模式,由簡單到複雜依序為:預設模式、預設 ID 自訂模板、完全自訂 ID 模式。
最簡單的用法,僅需一行標記即可啟用完整註冊流程:
<asp:CreateUserWizard ID="CreateUserWizardControl" runat="server" />
特點:
ASPNETDB.MDF(預設 SQL Express 會員資料庫)適用情境:快速原型、標準會員註冊、無特殊業務規則需求。
當需要調整版面配置、加入額外驗證(如使用者名稱只能英數字),但仍想沿用內建資料繫結與儲存邏輯時,使用 ContentTemplate 自訂介面,同時保留系統預定義的控件 ID。
| 欄位 | 必要控件 ID | 型別 |
|---|---|---|
| 使用者名稱 | UserName | TextBox |
| 密碼 | Password | TextBox (TextMode=Password) |
| 確認密碼 | ConfirmPassword | TextBox (TextMode=Password) |
| TextBox | ||
| 安全性問題 | Question | TextBox |
| 安全性答案 | Answer | TextBox |
<asp:CreateUserWizard ID="CreateUserWizardControl" runat="server">
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server" Title="帳號資訊">
<ContentTemplate>
使用者名稱:
<asp:TextBox ID="UserName" runat="server" />
<asp:RequiredFieldValidator ControlToValidate="UserName" ValidationGroup="CreateUserWizardControl"
ErrorMessage="請輸入使用者名稱" Display="Dynamic" />
<asp:RegularExpressionValidator ControlToValidate="UserName" ValidationGroup="CreateUserWizardControl"
ValidationExpression="^[a-zA-Z0-9]+$" ErrorMessage="僅限英數字" Display="Dynamic" />
<br />
密碼:
<asp:TextBox ID="Password" TextMode="Password" runat="server" />
<br />
確認密碼:
<asp:TextBox ID="ConfirmPassword" TextMode="Password" runat="server" />
</ContentTemplate>
</asp:CreateUserWizardStep>
</WizardSteps>
</asp:CreateUserWizard>
優點:保留內建的 CreateUser 事件處理、資料庫寫入、錯誤訊息顯示等功能。缺點:版面結構受限於預定義 ID,無法隨意更改控件命名。
若專案要求控件 ID 必須符合特定命名規範(如 myName、myPassword),系統將無法自動辨識,開發者必須自行處理完整流程:
FindControl 或直接參考)SqlConnection / Membership.CreateUser)protected void btnRegister_Click(object sender, EventArgs e)
{
string userName = ((TextBox)FindControl("myName")).Text;
string password = ((TextBox)FindControl("myPassword")).Text;
string email = ((TextBox)FindControl("myEmail")).Text;
try
{
MembershipCreateStatus status;
Membership.CreateUser(userName, password, email, null, null, true, out status);
if (status == MembershipCreateStatus.Success)
Response.Redirect("RegisterSuccess.aspx");
else
ShowError(status);
}
catch (Exception ex)
{
LogError(ex); ShowGenericError();
}
}
| 維度 | 預設模式 | 預設 ID 模板 | 完全自訂 ID |
|---|---|---|---|
| 開發速度 | 極快(零程式碼) | 快(僅調整前端) | 慢(全手工) |
| 版面彈性 | 無 | 高(保留 ID) | 完全自由 |
| 驗證邏輯 | 內建 | 內建 + 可擴充 | 全自訂 |
| 維護成本 | 極低 | 低 | 高 |
| 適用場景 | 標準註冊 | 需調整 UI/驗證 | 嚴格命名規範、複雜業務流程 |
ValidationGroup 確保驗證群組正確web.config 中的 membership 設定(密碼策略、鎖定機制等)善用 CreateUserWizard 的三種模式,能在開發效率與彈性間取得最佳平衡,避免重複造輪子。