کنترل CreateUserWizard از تعدادی رویداد تشکیل شده است. برای مثال؛ هنگام که بازدید کننده نام کاربری، گذرواژه و دیگر اطلاعات لازم را وارد کرد و بر روی دکمه Create User کلیک کند، کنترل CreateUserWizard رویداد CreatingUser را وادار عمل میکند. اگر در پروسه ایجاد کاربر اشکالی به وجود آید CreateUserError به کار گرفته میشود؛ همچنین اگر کاربر با موفقیت ایجاد شود رویداد CreatedUser اجرایی میشود.
در بعضی مواقع ممکن است ما بخواهیم در گردش کار کنترل CreateUserWizard دستکاری کنیم. برای روشن شدن این موضوع؛ اجازه دهید RegisterUser را با وارد کردن تعدادی اعتبار سنجی، توسعه دهیم. در این حالت اجازه ندهیم که نام کاربری شامل فضای خالی (space)؛ قبل و بعد و بین حروف؛ باشد. همچنین نام کاربری به هیچ عنوان در گذرواژه استفاده نشود.
برای انجام این کار باید یک عملیات رویداد برای رویداد CreatingUser ایجاد کنیم. اگر اطلاعات وارد شده معتبر نباشند، ایجاد کاربر باید منتفی شود. همچنین باید یک کنترل Label به صفحه اضافه کنیم تا پیام مربوط به نامعتبر بودن نام کاربری و یا گذرواژه را نمایش دهیم. با اضافه کردن یک کنترل Label در پایین کنترل CreateUserWizard کار را شروع میکنیم. ID آن را برابر InvalidUserNameOrPasswordMessage و ForeColor را برابر Red قرار میدهیم. متن Text آن را پاک کرده و مشخصههای EnableViewState و Visible آن را false میکنیم.
<asp:Label runat="server" id="InvalidUserNameOrPasswordMessage"
Visible="false" ForeColor="Red"
EnableViewState="false">
</asp:Label>
سپس کنترل CreateUserWizard را انتخاب کرده و در بالای پنجره Properties روی آیکن Events کلیک کنید تا رویدادها نمایش داده شوند. بروی رویداد CreatingUser دوبار کلیک کنید و کدهای زیر را وارد کنید:
protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e)
{
string trimmedUserName = RegisterUser.UserName.Trim();
if (RegisterUser.UserName.Length != trimmedUserName.Length)
{
// Show the error message
InvalidUserNameOrPasswordMessage.Text = "The username cannot contain leading or trailing spaces.";
InvalidUserNameOrPasswordMessage.Visible = true;
// Cancel the create user workflow
e.Cancel = true;
}
else
{
// Username is valid, make sure that the password does not contain the username
if (RegisterUser.Password.IndexOf(RegisterUser.UserName, StringComparison.OrdinalIgnoreCase) >= 0)
{
// Show the error message
InvalidUserNameOrPasswordMessage.Text = "The username may not appear anywhere in the password.";
InvalidUserNameOrPasswordMessage.Visible = true;
// Cancel the create user workflow
e.Cancel = true;
}
}
}