با استفاده از روشهای گوناگون میتوان CreateUserWizard را سفارشی نمود؛ از طریق مشخصات آن، کاستن و یا افزودن مرحله و رویدادهای آن. در این بخش میبینیم که چگونه ظاهر کنترل را از طریق مشخصات آن سفارشی کنیم؛ و در ادامه سفارشی ساختن رفتار کنترل از طریق رویدادهای آن را فرا میگیریم.
تمام متنهایی که به طور پیش فرض در کنترل CreateUserWizard نمایش داده میشوند از طریق مشخصات کنترل قابل تغییر هستند. برای مثال؛ متن برچسبهای User Name, Password, Confirm Password, E-mail, Security Question و Security Answer که در کنار جعبههای متن نمایش داده میشوند را میتوان با استفاده از مشخصههای UserNameLabelText, PasswordLabelText, ConfirmPasswordLabelText, EmailLabelText, QestionLabelText و AnswerLabelText سفارشی ساخت. همچنین مشخصههایی برای تعیین متن دکمههای Create User و Continue در CreateUserWizardStep و CompleteWizardStep وجود دارند.
علاوه بر مشخصههایی که مربوط به ظاهر هستند، بعضی از مشخصهها بر رفتار کنترل اثر میگذارند. مشخصه DisplayCancelButton از آن نوع است. اگر این مشخصه با مقدار true برابر شده باشد، در کنار دکمه Create User یک دکمه دیگر با متن Cancel نمایش داده میشود. اگر این مشخصه برابر true شد برای مشخصه CancelDestinationPageUrl باید نشانی یک صفحه مشخص کرد تا هنگام کلیک دکمه Cancel توسط کاربر، کاربر به آن صفحه هدایت شود. همانگونه که پیشتر گفته شد، با کلیک روی دکمه Continue در مرحله پایانی فقط یک Postback انجام میشود و کاربر در همان صفحه میماند. برای هدایت کاربر به صفحه دیگر بعد از کلیک دکمه Continue باید مشخصه ContinueDestinationPageUrl را با نشانی یک صفحه مقداردهی کنیم.
حالا در صفحه RegisterUser کنترل CreateUserWizard را طوری تغییر میدهیم که دکمه Cancel را نمایش داده و هنگام کلیک این دکمه و دکمه Continue کاربر به صفحه Default.aspx هدایت شود. برای انجام این کار مقدار مشخصه DisplayCancelButton را برابر True قرارداده و CancelDestinationPageUrl و ContinueDestinationPageUrl را برابر “~/Default.aspx” قرار دهید.
هنگامی که یک بازدید کننده نام کاربری، گذرواژه، رایانامه، پرسش امنیتی و پاسخ آن را وارد کرده و بر روی دکمه Create User کلیک میکند، یک کاربر جدید ایجاد شده و همزمان آن کاربر login میشود. شاید این امر از نظر کاربر بسیار خوب باشد که همزمان با ثبت نام، نام کاربری آن نیز فعال گشته و داخل سایت شود. اما، شاید از نظر شما بهتر باشد که بازدید کننده پس از ثبت نام login نشود. بدین منظور مشخصه LoginCreateUser را برابر false قرار دهید.
حساب کاربری در بستر عضویت شامل یک پرچم تایید (approved) است؛ کاربری که تایید نشده باشد نمیتواند داخل سایت شود (login کند). به طور پیش فرض، حساب کاربری جدید که ایجاد میشود، تایید نیز میگردد و کاربر میتواند همان لحظه وارد سایت شود. این امکان وجود دارد که کاربر جدید ایجاد شده تایید نشده (unapproved) باشد. شاید شما بخواهید کاربر جدید توسط مدیر سایت تایید شود؛ و یا ممکن است بخواهید قبل از اجازه ورود به کاربر جدید درستی رایانامه وارد شده را بسنجید. برای این کار بهتر است کاربر جدید هنگام ثبت نام تایید نشود؛ بدین منظور مشخصه DisableCreateUser را برابر true قرار دهید.
دو مشخصه دیگر که رفتاری هستند عبارتند از: AutoGeneratePassword و MailDefinition. اگر مشخصه AutoGeneratePassword برابر true قرار داده شود، جعبه متنهای گذرواژه و تکرار گذرواژه نمایش داده نمیشوند، به جای آن با استفاده از متد GeneratePassword در کلاس Membership به طور خودکار گذرواژه تولید میگردد. متد GeneratePassword یک گذرواژه بر اساس ساختار پیکربندی شده؛ کمترین تعداد حروف، کمترین تعداد حروف غیر الفبایی؛ تولید میکند.
مشخصه MailDefinition برای فرستادن رایانامه به نشانی وارد شده هنگام ثبت نام، بسیار کاربردی است. مشخصه MailDefinition دارای زیرمشخصههایی برای انجام تنظیمات فرستادن رایانامه میباشد. این زیرمشخصهها شامل: Subject, Priority, IsBodyHtml, From, CC و BodyFileName میباشد. مشخصه BodyFileName به یک فایل متنی و یا HTML اشاره میکند که متن رایانامه در آن قرار دارد. بدنه رایانامه دو placeholder (متاسفانه ترجمهای برای این به فکرم نرسید) را پشتیبانی میکند: <%UserName%> و <%Password%>. این دو با مقادیر وارد شده توسط بازدید کننده هنگام ایجاد کاربر جدید جایگزین میشوند.
به قسمت Design صفحه CreatingUserAccounts.aspx در پوشه Membership رفته و یک کنترل CreateUserWizard به بالای صفحه اضافه کنید. بعد از اضافه کردن کنترل مشصخه ID آن را به RegisterUser تغییر دهید. هماهنگونه که در شکل زیر میبینید این کنترل تعدادی جعبه متن برای پاسخ دادن کاربر جهت دریافت نام کاربری، گذرواژه، رایانامه و پرسش امنیتی و پاسخ آن دارد.
حال مقایسهای بین این کنترل در حالت پیش فرض و رابط کاربری که ما در گام چهارم ایجاد کردیم، خواهیم داشت. در ابتدا، مشخص است که کنترل CreateUserWizard هم برای پرسش امنیتی و هم برای جواب آن دست کاربر را باز گذاشته است. همچنین در این کنترل، کنترلهای اعتبارسنجی نیز به کار رفته است. در آخر، در کنترل CreateUserWizard جعبه متنی برای تکرار گذرواژه وجود دارد که به وسیله کنترل اعتبارسنجی، گذرواژه و تکرار آن با هم مقایسه میشوند.
نکته جالب توجه این است که کنترل CreateUserWizard کنترلهای خود (جعبه متنها، برچسبها و ...) را بسته به نوع تنظمیات تهیه کننده عضویت نمایش داده و جواب میگیرد. برای مثال؛ اگر در تنظیمات Membership provider عنصر requieresQuestionAnswer با true مقداردهی شده باشد، جعبه متنهای پرسش امنیتی و پاسخ آن نمایش داده میشوند. همچنین این کنترل یک کنترل اعتبارسنجی برای اعتبارسنجی گذرواژه اضافه میکند تا حداقل کاراکترهای مشخص شده در تنظیمات و حداقل تعداد کاراکترهای غیر الفبایی مشخص شده نیز رعایت شوند.
کنترل CreateUserWizard، همانگونه که از نامش مشخص است از کنترل Wizard ساخته شده است. کنترل Wizard برای انجام کارهایی که مرحلهای هستند، طراحی شده است.
کنترل CreateUserWizard دارای دو مرحله است:
· CreateUserWizardStep: در این مرحله، کنترل اطلاعات لازم برای ایجاد یک حساب کاربری جدید را از کاربر دریافت میکند.
· CompleteWizardStep: یک پیام مبنی بر ایجاد یک کاربر با موفقیت، به کاربر نشان میدهد.
ظاهر و رفتار کنترل CreateUserWizard میتواند با تبدیل مراحل آن به قالب (template) و یا اضافه کردن مرحله، تغییر کند.
سایت را اجرا کرده تا صفحه CreatingUserAccounts.aspx در مرورگرتان نمایش داده شود. در رابط کاربری CreateUserWizard اطلاعات نادرست وارد کنید. تعداد حروف گذرواژهای که وارد میکنید از تعداد لازم کمتر باشد، و یا گذرواژه و تکرار آن یکسان نباشند، و یا نام کاربری وارد نکنید. CreateUserWizard پیامهای خطای مناسب را به شما نمایش میدهد.
حال، مقادیر مناسب وارد کرده و روی دکمه Create User کلیک کنید. با فرض اینکه اطلاعات درست وارد شده باشند، CreateUserWizard یک حساب کاربری جدید از طریق بستر عضویت ایجاد کرده و سپس رابط کاربری CompleteWizardStep را نمایش میدهد (شکل زیر).
همانطور که میبینید بعد از نمایش پیام ایجاد کاربر جدید با موفقیت، یک دکمه با عنوان Continue وجود دارد. در حال حاضر اگر روی آن کلیک کنید فقط یک PostBack اتفاق افتاده و عملیاتی انجام نمیشود و باز همین صفحه نمایش داده میشود. در آینده در باره این دکمه صحبت خواهیم کرد.
بعد از ایجاد یک کاربر جدید، باز هم به پایگاه داده رفته و در آن نیز وجود آن را بررسی کنید.
ASP.NET تعدادی کنترل Login در اختیار ما قرار میدهد. کنترل CreateUserWizard یکی از این کنترلهاست که به عنوان یک رابط کاربری جهت ایجاد یک کاربر جدید طراحی شده است.
مانند دیگر کنترلهای Login از CreateUserWizard نیز میتوان بدون نوشتن حتی یک خط کد استفاده کرد. این کنترل قابلیت سفارشی سازی را دارد. رویدادهایی وجود دارند که در مراحل مختلف ایجاد حساب کاربری عملیات آنها انجام میشود. میتوانیم رویداد دلخواه خود را نوشته تا در خلال عملیات ایجاد حساب کاربری انجام پذیرد. گذشته از این، ظاهر کنترل CreateUserWizard نیز خیلی قابل انعطاف است. مشخصههای زیادی وجود دارند که به وسیله آنها میتوانید ظاهر کنترل را تغییر دهید. همچنین میتوانید به مراحل آن، مرحله اضافه کرده و کدهای خود را بنویسید.