1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش شخصی سازی در ASP.NET

شروع موضوع توسط AftabGardoon ‏8/2/19 در انجمن ASP.NET

Tags:
  1. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    وب سایت ها باید ویژه ی بازدید مکرر کاربران تعبیه و طراحی شود. 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 ذخیره می گردد.
     
  2. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    مثال:
    ابتدا یک وب سایت آزمایشی می سازیم که قابلیت بخاطر سپردن و ذخیره سازی اطلاعات و جزئیات مربوط به کاربر همچون اسم، آدرس، تاریخ تولد و غیره .. را داشته باشد. جزئیات پروفایل را در فایل 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 >
     
  3. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    پس از اینکه پروفایل مورد نظر در فایل web.config تعریف می شود، می توان به وسیله ی خاصیت Profile موجود در HttpContext جاری یا از طریق page به پروفایل دسترسی پیدا کرده و آن را مورد استفاده قرار داد.


    حال یک کنترل textbox به منظور دریافت ورودی کاربر آنگونه که در پروفایل مربوطه تعریف شده و همچنین یک کنترل دکمه برای ارسال (submit) اطلاعات، به صفحه اضافه کنید.


    [​IMG]
     
  4. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    کد:
    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;
             }
          }
       }
     
    }
     
  5. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    اکنون 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();
                }
            }
    پس از اجرای صفحه برای اولین بار، کاربر اطلاعات خود را وارد می کند، اما بار دگیری که کاربر مراجعه می کند، اطلاعات به صورت خودکار بار گذاری می شوند.
     
  6. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    خصیصه های (attribute) المان < add >

    جدا از خصیصه های name و type که پیش تر آن ها را در مثال های خود بکار بردیم، خصیصه های دیگری نیز وجود دارند که مختص المان < add > می باشد. جدول زیر برخی از این خصیصه ها را برای شما با ذکر شرح فهرست کرده:

    [​IMG]
     
  7. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    شخصی سازی به صورت ناشناس (anonymous personalization)

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

    کد:
    < anonymousIdentification enabled ="true" cookieName=".ASPXANONYMOUSUSER"
      cookieTimeout="120000" cookiePath="/" cookieRequiresSSL="false"
      cookieSlidingExpiration="true" cookieprotection="Encryption"
      coolieless="UseDeviceProfile"/ >