وب سایت ها باید ویژه ی بازدید مکرر کاربران تعبیه و طراحی شود. Personalization (شخصی سازی) به سایت این امکان را می دهد که هویت و دیگر جزئیات و اطلاعات مختص هر کاربر را بخاطره سپرده و نیز ویژه ی هر کاربر محیطی منحصر به فرد (کاملا فردی) ارائه دهد. ASP.NET با ارائه ی قابلیت شخصی سازی این امکان را فراهم می آورد که وب سایت مطابق با میل و سلیقه ی کاربر تنظیم شود. آشنایی با مفهوم profile سرویس شخصی سازی (personalization) ASP.NET مبتنی بر user profile می باشد. user profile آن دسته از اطلاعات مربوط به کاربر که وب سایت به آن نیاز دارد را تعریف می کند. به عنوان مثال می توان به جزئیات اطلاعاتی همچون اسم، سال، آدرس، تاریخ تولد و شماره تلفن کاربر اشاره کرد. اطلاعات ذکر شده در فایلی به نام web.config که متعلق به اپلیکیشن است تعریف می شود. ASP.NET runtime این اطلاعات را خوانده سپس مورد استفاده قرار می دهد. عملیات نام برده توسط personalization provider ها انجام می گیرد. User profile ها همان طور که انتظار می رود از داده های مربوط به کاربر (user data) برگرفته شده و در پایگاه داده ای که به صورت پیش فرض توسط ASP.NET ایجاد می شود، ذخیره می گردد. البته برنامه نویس می تواند در صورت تمایل پایگاه داده ی اختصاصی خود را جهت ذخیره سازی user profile ها ایجاد کند. تعریف داده های پروفایل در فایل پیکربندی به نام web.config ذخیره می گردد.
مثال: ابتدا یک وب سایت آزمایشی می سازیم که قابلیت بخاطر سپردن و ذخیره سازی اطلاعات و جزئیات مربوط به کاربر همچون اسم، آدرس، تاریخ تولد و غیره .. را داشته باشد. جزئیات پروفایل را در فایل web.config داخل المان < system.web > اضافه کنید. کد: < configuration > < system.web > < profile > < properties > < add name="Name" type ="String"/ > < add name="Birthday" type ="System.DateTime"/ > < group name="Address" > < add name="Street"/ > < add name="City"/ > < add name="State"/ > < add name="Zipcode"/ > < /group > < /properties > < /profile > < /system.web > < /configuration >
پس از اینکه پروفایل مورد نظر در فایل web.config تعریف می شود، می توان به وسیله ی خاصیت Profile موجود در HttpContext جاری یا از طریق page به پروفایل دسترسی پیدا کرده و آن را مورد استفاده قرار داد. حال یک کنترل textbox به منظور دریافت ورودی کاربر آنگونه که در پروفایل مربوطه تعریف شده و همچنین یک کنترل دکمه برای ارسال (submit) اطلاعات، به صفحه اضافه کنید.
کد: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace Personalization { public partial class WebForm1 : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { ProfileCommon pc=this.Profile.GetProfile(Profile.UserName); if (pc != null) { this.txtname.Text = pc.Name; this.txtaddr.Text = pc.Address.Street; this.txtcity.Text = pc.Address.City; this.txtstate.Text = pc.Address.State; this.txtzip.Text = pc.Address.Zipcode; this.Calendar1.SelectedDate = pc.Birthday; } } } }
اکنون handler (اداره کننده) زیر را برای دکمه ی Submit نوشته تا اطلاعات کاربر داخل پروفایل مورد نظر ذخیره گردد: کد: protected void btnsubmit_click(object sender, eventargs e) { profilecommon pc = this.profile.getprofile(profile.username); if (pc != null) { pc.name = this.txtname.text; pc.address.street = this.txtaddr.text; pc.address.city = this.txtcity.text; pc.address.state = this.txtstate.text; pc.address.zipcode = this.txtzip.text; pc.birthday = this.calendar1.selecteddate; pc.save(); } } پس از اجرای صفحه برای اولین بار، کاربر اطلاعات خود را وارد می کند، اما بار دگیری که کاربر مراجعه می کند، اطلاعات به صورت خودکار بار گذاری می شوند.
خصیصه های (attribute) المان < add > جدا از خصیصه های name و type که پیش تر آن ها را در مثال های خود بکار بردیم، خصیصه های دیگری نیز وجود دارند که مختص المان < add > می باشد. جدول زیر برخی از این خصیصه ها را برای شما با ذکر شرح فهرست کرده:
شخصی سازی به صورت ناشناس (anonymous personalization) به کاربر امکان می دهد که سایت را پیش از شناسایی خود شخصی سازی کند. برای مثال، Amazon.com به کاربر اجازه می دهد پیش از ثبت ورود (login) آیتم دلخواه را به سبد خرید اضافه کند. به منظور فعال سازی و استفاده از این امکان، لازم است فایل web.config را به ترتیب زیر پیکربندی و تنظیم کنید: کد: < anonymousIdentification enabled ="true" cookieName=".ASPXANONYMOUSUSER" cookieTimeout="120000" cookiePath="/" cookieRequiresSSL="false" cookieSlidingExpiration="true" cookieprotection="Encryption" coolieless="UseDeviceProfile"/ >