راهکارهای موثر در ASP.Net
راهکار 4 - 5 : نگهداری اطلاعات کاربران در سایت ها بوسیله امکان Profile properties
مقدمه :
بوسیله امکان خواص پروفایل ها یا ( Profile properties ) در Asp.Net، می توانید اطلاعات
خاص کاربران خود را دریافت کرده و در صورت نیاز آنها را ذخیره کنید . برای مثال کاربران
می توانند یک کد پستی یا یک رنگ مورد علاقه خود برای استفاده در تم سایت را تعیین کرده
، سپس برنامه آنها را ذخیره می کند . بعد از آن ، هرجا که نیاز باشد ، برنامه اطلاعات
را برای استفاده آن کاربر فراخوانی می کند . Asp.Net بصورت خودکار می تواند کاربری
که به سایت داده شده ( چه عضو باشد،چه نباشد ) را شناسایی کرده ( بر حسب کوکی ها )
و سپس اطلاعات مربوط به آن کاربر را خوانده و در اختیار برنامه قرار دهد .
این راهکار به شما آموزش می دهد چگونه اطلاعات خاص مورد نظر خود را از کاربر دریافت
کرده و ذخیره و سپس استفاده نمایید . مباحث مطرح شده در این راهکار عبارتند از :
- تنظیم برنامه یا سایت خودتان برای استفاده از امکان Profile properties .
- تعیین و دریافت یک یا چند اطلاعات از کاربر و ذخیره آن .
- دریافت اطلاعت ذخیره شده از هر کاربر و سپس بازخوانی امکان اطلاعات در هنگام لازم.
برای حمایت از این پروژه ، کتاب
راهکارهای موثر در ASP.Net را دانلود نمایید ...
پیش نیازها :
قبل از اجرای راهکار بایستی برنامه ها و امکانات زیر بر روی سیستم شما فعال باشند :
- Microsoft Visual Studio .
- SQL Server Express که بر روی کامپیوتر شما نصب شده باشد . این برنامه معمولا با ویژوال
استودیو نصب می شود .
- فعال بودن کوکی ها بر روی مروگر شما .
مرحله اول - طراحی یک سایت ASP.Net :
در مرحله اول از راهکار بایستی یک سایت ASP.Net را برای اجرای پروژه خود ایجاد نمایید
. فرض بر این است که سایت را قبلا ایجاد کرده و یا با نحوه اجرای آن آشنایی دارید ،
در غیر اینصورت به راهکار شماره 1-1 : نحوه ایجاد یک وب سایت ASP.Net در ویژوال استودیو
بروید .
مرحله دوم - تنظیم امکان Profile properties در سایت :
در مرحله اول امکان Profile properties را در سایت خود فعال می کنیم . سپس اولین خاصیتی
که برای هر کاربر می خواهید ثبت کنید را تعیین می نماییم . این خاصیت ، کد پستی یا
Postal Code بوده و برای هر دو نوع کاربر عضو و غیر عضو ثبت می شود .
نحوه تنظیم وب سایت برای دریافت خاصیت کد پستی Postal Code :
- در منوی Solution Explorer ، دقت نمایید که آیا وب سایت شما دارای فایل تنظیمات سایت
یا Web.config است یا خیر . در غیر اینصورت مراحل زیر را انجام دهید :
- بر روی نام وب سایت خود کلیک راست نموده و گزینه Add New Item را انتخاب نمایید
- سپس از پنجره باز شده ، یک فایل Web Configuration File را انتخاب کرده و به سایت اضافه
نمایید . مطابق تصویر زیر :
- فایل جدید با نام Web.config به سایت اضافه می شود . نام آن را به هیچ عنوان تغییر
ندهید .
- فایل Web.config را باز کرده و المنت Profile را به عنوان یک عنصر فرزند به المنت System.Web
به فایل Web.config اضافه نمایید . به صورت زیر :
|
کد
|
<system.web>
<anonymousIdentification enabled="true" />
<profile>
<properties>
<add
name="PostalCode"
type="System.String"
allowAnonymous="true" />
</properties>
</profile>
</system.web>
|
نکته : تمامی کدها و المنت های موجود در فایل Web.Config به بزرگ
یا کوچک بودن حروف حساس هستند . به این مسئله دقت نمایید . اما تشریح کدی که به فایل
Web.Config اضافه نمودیم :
در خط اول المنت anonymousIdentification ، را به فایل اضافه نمودیم که مقدار آن بر
روی "true" تنظیم شده است . این خاصیت تعیین می کند که اطلاعات برای هر دو دسته کاربران
عضو و غیر عضو ثبت می شود . در حالت پیش فرض ، این اطلاعات برای کاربران غیر عضو یا
anonymous users ثبت نمی شود .
- المنت Properties ، کلید خواصی
که می خواهید برای کاربران ثبت شود را در خود تعریف می کند .
- بوسیله المنت add ، اولین خاصیتی
که می خواهیم برای هر کاربر ذخیره و ثبت کنیم را تعیین کرده ایم . تمام این خاصیت Postal
Code ، نوع آن از نوع متن System.String بوده و برای کاربران غیر عضو نیز ثبت می شود
.
برای هر خاصیتی که می خواهید برای ثبت اطلاعات کاربران به کار ببرید ، باید یک المنت
add را بصورت تشریح شده ، در کد اضافه نمایید .
نکته مهم : بصورت پیش فرض ، اطلاعات Profile
کاربران در سایت های Asp.Net در یک پایگاه داده SQL Server در پوشه App_Data سایت نگهداری
می شود . این راهکار نیز از همین فایل استفاده می کند . اما در سایت های بزرگ Asp.Net
که از حجم بالای کارران برخوردارند ، استفاده از یک فایل داده تحت سرور از فایل ساده
SQL Server بهتر است .
مرحله سوم - تنظیم و دریافت خاصیت کد پستی Postal Code :
در این بخش از راهکار ، صفحه ای طراحی می کنیم که نحوه دریافت و ثبت خاصیت کد پستی
Postal Code را که در مرحله قبل تعریف نمودیم ، نشان می دهد . برای این منظور مراحل
زیر را انجام دهید :
- یک صفحه جدید با نام Profiles.aspx را به وب سایت خود اضافه نموده و مطمئین شوید که
کادر Place Code in Seprate File برای ایجاد یک فایل مجزا جهت کدنویسی ، علامت خورده
باشد .
- صفحه Profile.aspx را باز کرده و به نمای Design بروید .
- از منوی Toolbox برنامه ویژوال استودیو و بخش کنترل های Standard ، کنترل های زیر با
خواص تعیین شده را به صفحه اضافه نمایید :
|
Property settings
|
Control
|
|
ID = PostalCodeTextBox
|
TextBox
|
|
ID = SetPostalCodeButton
Text = Set
Postal Code
|
Button
|
|
ID = PostalCodeLabel
Text =
خالی
|
Label
|
- بر روی کنترل دکمه فرمان Postal Code ، دابل کلیک نمایید تا تابع رویداد کلیک آن باز
شده و کد لازم برای اجرا در زمان کلیک بر روی آن را بصورت زیر اضافه نمایید :
|
VB کد
|
Protected Sub SetPostalCode_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Profile.PostalCode = Server.HtmlEncode(PostalCodeTextBox.Text)
PostalCodeLabel.Text = Profile.PostalCode
End Sub
|
|
C# کد
|
protected void SetPostalCode_Click(object sender, System.EventArgs e)
{
Profile.PostalCode = Server.HtmlEncode(PostalCodeTextBox.Text);
PostalCodeLabel.Text = Profile.PostalCode;
}
|
- نکته : هنگامی که خواص Profile را برای وب سایت Asp.Net فعال می کنید
Asp.Net بصورت اتوماتیک یک خاصیت به نام Profile ایجاد می کند که سایر خواص درون آن
قرار بگیرند . برای مثال خاصیت PostalCode بصورت Profile.PostalCode قابل دسترسی است
.
- کد زیر را به رویداد لود صفحه یا Page_Load اضافه نمایید تا به محض اجرای صفحه ، مقدار
خاصیت ذخیره شده PostalCode را خوانده و نمایش دهد :
|
VB کد
|
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
PostalCodeLabel.Text = Profile.PostalCode
End Sub
|
|
C# کد
|
void Page_Load(object sender, System.EventArgs e)
{
PostalCodeLabel.Text = Profile.PostalCode;
}
|
نحوه امتحان کردن کارکرد خاصیت Postal Code در صفحه :
اکنون در نظر داریم تا نحوه عملکرد خاصیت PostalCode که در مراحل قبل تعریف نمودیم
را امتحان کنیم . در این مرحله بصورت یک کاربر غیر عضو ( anonymous user ) به سایت
وارد می شویم . به محض ورود به سایت ، Asp.Net یک شناسه منحصر به فرد یا ID به کاربر
اختصاصی می دهد که از آن برای نگهداری و دریافت و ذخیره خواص Profile استفاده می کند
. این ID بصورت یک کوکی بر روی کامپیوتر کاربر ذخیره می شود و برای شما منحصر به فرد
است . برای تست خاصیت PostalCode مراحل زیر را انجام دهید :
- در منوی Solution Explorer بر روی نام صفحه Profile.aspx کلیک راست کرده و با انتخاب
گزینه Set as Start Page ، آن را به عنوان صفحه آغازین وب سایت تعیین نمایید .
- با زدن کلیدهای Ctrl+F5 صفحه Profile.aspx را اجرا نمایید .
نکته : زمانی که برای اولین بار پروژه یا وب سایت خود را اجرا می
کنید ، ممکن است این کار مدت زمانی بیش از حد معمول طول بکشد ، زیرا برنامه بایستی
پایگاه داده SQL پروژه را ساخته و بقیه پروژه را کامپایل نماید .
- در کادر متنی که به منظور وارد کردن کد پستی بر روی صفحه قرار داده ایم ، کدپستی خود
را وارد نموده و سپس برای ثبت ، آن بر روی دکمه فرمان Set Postal Code کلیک نمایید
. کدپستی وارد شده همزمان در کنترل Lable نیز نمایش داه می شود .
- صفحه جاری مرورگر را ببندید تا Session جاری از بین برود .
- مجددا با زدن کلیدهای Ctrl+F5 صفحه Profile.aspx را اجرا نمایید . مشاهده خواهید کرد
که کدپستی که در مرحله قبل وارد نمودید ، به محض اجرای صفحه در کنترل Lable نمایش داده
می شود . در واقع صفحه این خاصیت را از کوکی ذخیره شده بر روی مرورگر استخراج می کند
.
- نکته مهم : اگر کمی دقت نمایید ، متوجه خواهید شد که برنامه به صورت
اتوماتیک پایگاه داده ای به نام ASPNETDB.MDF را در پوشه App_Data ، برای نگهداری اطلاعات
خواص کاربران در سایت ایجاد کرده است .
مرحله چهارم - تعیین خواص چندتایی ( آرایه ای ) در Profile :
در مرحله قبل این راهکار ، ما یک خاصیت ساده با نام PostalCode که از نوع متن ( String
) بود را ایجاد و استفاده کردیم . در این مرحله خاصیت دیگری را خواهیم ساخت به نام
FavoriteURLs که یک خاصیت مجموعه ای ( آرایه ای ) است . امکان خواص Profile در Asp.Net
، هر نوع متغیری را می تواند در خود نگهداری نماید ، فقط شما بایستی اطلاعات لازم را
برای آن تعیین کنید .
نحوه تعریف خاصیت Favorite URLs :
- فایل Web.Config را باز کنید .
- یک المنت جدید add را برای ایجاد خاصیت به نام " FavoriteURLs " به المنت Profile همانند
خاصیت مرحله قبل اضافه نمایید . همانطور که متوجه شدید در کد زیر یک خاصیت جدید به
نام " FavoriteURLs " را که از نوع مجموعه ای متن یا " System.Collections.Specialized.StringCollection
" است را ایجاد نموده و برای هر نوع کاربر چه عضو و چه غیر عضو ثبت و ذخیره می
شود . این خاصیت یک آرایه بوده و می تواند چندین مقدار را نگهداری نماید .
بخش آبی رنگ را به فایل Web.Config اضافه نمایید :
|
کد
|
<system.web>
<anonymousIdentification enabled="true" />
<profile>
<properties>
<add name="PostalCode"
type="System.String"
allowAnonymous="true" />
<add
name="FavoriteURLs"
type="System.Collections.Specialized.StringCollection"
allowAnonymous="true"
/>
</properties>
</profile>
</system.web>
|
- فایل Web.Config را بسته و ذخیره نمایید .
نحوه دریافت و ذخیره خاصیت FavoriteURLs در صفحه :
نحوه کار با خاصیت FavoriteURLs که یک مجموعه است بسیار شبیه کار با سایر متغیرهای
آرایه ای متنی است . در این مرحله از راهکار با افزودن یک کنترل TextBox دیگر که کاربر
بایستی در آن URL های مورد نظر خود را وارد نمایید ، صفحه Profile.aspx را به روز رسانی
می کنیم . هنگامی که کاربر URL را وارد نموده و بر روی دکمه فرمان Add کلیک نمایید
، آدرس جدید به مجموعه خواص FavoriteURLs اضافه می شود . سپس شما می توانید آدرس های
وارد شده را در یک کنترل کادر کشویی Drop_Down List نمایش
دهید . برای این منظور مراحل زیر را انجام دهید :
- در صفحه Profile.aspx ، کنترل های زیر را با خواص تعیین شده برای آنها اضافه نمایید
:
|
Property settings
|
Control
|
|
ID = FavoriteURLTextBox
|
TextBox
|
|
ID = AddURLButton
Text = Add
URL
|
Button
|
|
ID = FavoriteURLsListBox
|
ListBox
|
- بر روی دکمه فرمان Add URL در نمای Design صفحه ، دابل کلیک نمایید تا رویداد کلیک
آن برای نوشتن کد باز شود .
- در درون تابع رویداد کلیک دکمه فرمان Add URL کد زیر را برای ایجاد خاصیت مجموعه ای
FavoriteURLs اضافه نمایید :
|
VB کد
|
Protected Sub AddURL_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim urlString As String = Server.HtmlEncode(FavoriteURLTextBox.Text)
If Profile.FavoriteURLs Is Nothing Then
Profile.FavoriteURLs = New System.Collections.Specialized.StringCollection
End If
Profile.FavoriteURLs.Add(urlString)
DisplayFavoriteURLs( )
End Sub
|
|
C# کد
|
protected void AddURL_Click(object sender, System.EventArgs e)
{
String urlString = Server.HtmlEncode(FavoriteURLTextBox.Text);
if( Profile.FavoriteURLs
== null )
{
Profile.FavoriteURLs = new System.Collections.Specialized.StringCollection( );
}
Profile.FavoriteURLs.Add(urlString);
DisplayFavoriteURLs( );
}
|
- درون رویداد Page_Load صفحه نیز کد زیر را برای خواندن و بازیابی اطلاعات خاصیت FavoriteURLs
و نمایش آن درون کنترل کادر کشویی اضافه نمایید :
|
VB کد
|
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
DisplayFavoriteURLs( )
End Sub
|
|
C# کد
|
void Page_Load(object sender, System.EventArgs e)
{
DisplayFavoriteURLs( );
}
|
- همچنین کد تابع اصلی زیر را نیز برای به روز رسانی آیتم های کنترل ListBox در بخش کد
قرار دهید :
|
VB کد
|
Sub DisplayFavoriteURLs( )
FavoriteURLsListBox.DataSource = Profile.FavoriteURLs
FavoriteURLsListBox.DataBind( )
End Sub
|
|
C# کد
|
void DisplayFavoriteURLs( )
{
FavoriteURLsListBox.DataSource = Profile.FavoriteURLs;
FavoriteURLsListBox.DataBind( );
}
|
نحوه تست کارکرد خاصیت Favorite URLs :
- با زدن دکمه های Ctrl+F5 صفحه را اجرا نمایید . در ابتدا مشاهده خواهید کرد که کنترل
کشویی ListBox خالی است .
- یک آدرس URL مورد نظر خود را درون کادر متن مخصوص نوشته و سپس دکمه Add URL را بزنید
. URL به خاصیت اضافه می شود . مجددا کادر فوق را برای اضافه کردن URL دومی به خاصیت
، انجام دهید .
- مرورگر را ببندید تا Session جاری صفحه منقضی شده و از بین برود .
- مجددا صفحه را با زدن دکمه های Ctrl+F5 اجرا نمایید . این بار مشاهده خواهید کرد که
آدرس هایی که در مرحله قبل اضافه نموده اید ، در هنگام اجرای صفحه در کنترل ListBox
نمایش داده می شوند .
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1
حمایت نمایید :