آموزش ASP.Net

آموزش ASP.Net - شخصی سازی

وب سایت ها باید ویژه ی بازدید مکرر کاربران تعبیه و طراحی شود. 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) اطلاعات، به صفحه اضافه کنید.

personalization

Page_load را برای نمایش اطلاعات پروفایل به روز رسانی کنید:

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;

public partial class _Default : 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 > می باشد. جدول زیر برخی از این خصیصه ها را برای شما با ذکر شرح فهرست کرده:

خصیصه

شرح

name

اسم خاصیت (property) مورد نظر را تعریف می کند.

type

به صورت پیش فرض داده از نوع رشته ای (string) است، اما هر اسم کلاسی (class name) که کاملا تعریف شده باشد را به عنوان نوع داده (data type) می پذیرد.

serializeAs

قالب یا فرمتی که باید به هنگام سریال کردن این مقدار از آن استفاده شود.

readOnly

مقدار profile فقط خواندنی (read-only) قابل اصلاح نیست، به صورت پیش فرض این خاصیت false می باشد.

defaultValue

یک مقدار پیش فرض که در صورت عدم وجود پروفایل یا عدم وجود اطلاعات کاربر در آن، بکار می رود.

allowAnonymous

یک مقدار بولی که تعیین می کند آیا امکان استفاده از این خاصیت با پروفایل های ناشناس (anonymous profile) وجود دارد یا خیر.

Provider

ارائه دهنده ی پروفایلی (profile provider) که باید به منظور مدیریت تنها این خاصیت بکار گرفته شود.

 

شخصی سازی به صورت ناشناس (anonymous personalization)

به کاربر امکان می دهد که سایت را پیش از شناسایی خود شخصی سازی کند. برای مثال، Amazon.com  به کاربر اجازه می دهد پیش از ثبت ورود (login) آیتم دلخواه را به سبد خرید اضافه کند. به منظور فعال سازی و استفاده از این امکان، لازم است فایل web.config را به ترتیب زیر پیکربندی و تنظیم کنید:

<anonymousIdentification enabled ="true" cookieName=".ASPXANONYMOUSUSER"
   cookieTimeout="120000" cookiePath="/" cookieRequiresSSL="false"
   cookieSlidingExpiration="true" cookieprotection="Encryption"
   coolieless="UseDeviceProfile"/>
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش ASP.Net

Learn ASP.Net

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...