مقالات

طراحی سایت با asp-net | اموزش view state

با یکی دیگر اموزش طراحی سایت الو وب به زبان asp.net .در این پست به اموش State Management میپردازیم.

مديريت حالت : مديريت حالت به مجموعه تکنيک ھا يی گفته می شود, که به حفظ حالت برنامه کمک می کنند.مثلا اگر بخواھيد برای حفظ حالت يک صفحه ی خاص در وب سایت , اطلاعات کاربر را در اختيار داشته باشيد ,مثل نام کاربری, مديريت حالت می تواند به شما کمک کند.مديريت حالت شامل تکنيک ھای مختلفی می شود که در زير اھم آنھا آمده است:

View State
Query String
Cross-Page Posting
Cookie
Session
Applicatiom
Cache

:View State

يک شی که مقادير فرم ھا را در خود نگھداری می کند.البته به گونه ی کاملا موقتی!.به  , اين ترتيب که در ھر صفحه ای که شما در آن مقاديری را وارد می کنيد View State يک فيلد مخفی ( (Hidden Field ايجاد می کند و مقادير داده ای شما را تا وقتی صفحه باز باشد در آن فيلد نگه می دارد که حتی با PostBack شدن صفحه ھم از بين نميرود.ولی بدی View State اين است که فقط در Current Page کاربرد دارد ,يعنی تنھا در ھمان صفحه ای که مقادير را وارد می کنيد , نه تمام صفحات.

تعريف آن نيز به صورت زير است: (ViewState.Add(“a”, “reza”)

 

که در اين کد ما يک View State به نام a با مقدار reza تعريف کرديم.

ميتوان به جای رشته ھای دلخواه ,از کنترلھای موجود استفاده کرد.مثلا کد زير يک View State تعريف می کند با نام يک کنترل TextBox و مقدار Text ان

ViewState.Add(TextBox2.ID, TextBox2.Text)

ولی در حالت کلی يادتان باشد که اگر خواھان صفحات سبکتری ھستيد از View State استفاده نکنيد زيرا حجم صفحه را با فيلد مخفی که می سازد زياد می کند.ھمچنين از نگھداری اطلاعات سری و مخفی کاربران در View State بپرھيزيد .چون ھر لحظه امکان از بين رفتن اطلاعات آن می باشد.چون ھمانطور که گفتيم View State  در Current Page کاربرد دارد . می توان به جای آن از کلکسيون ھای کم حجم تری مثل Queue و Stack ArrayList , , HashTable

استفاده کرد.برای باز يابی View State ھم می توان به صورت زير عمل کرد: label1.Text = ViewState(TextBox1.ID)

ھنگام بازيابی  View State ھميشه شرط زير را بر روی آن قرار دھيد تا ھر وقت تھی نبود بازيابی شود تا در اين صورت با خطا ی NullRefrence مواجه نشويد: If ViewState(TextBox1.ID) IsNot Nothing Then
Label1.Text = String.Empty
Label2.Text += ViewState(TextBox1.ID) & “<br>”
End If

برای ذخيره کردن مقادير مختلفی از نوع integer يا string يا ھر چيز ديگر  برای شما محدوديتی قايل نيست. به اين صورت که View State ابتدا مقادير ورودی را به stream of bytes تبديل می کند و سپس اين مقادير stream of bytes را وارد فيلد مخفی می کند. سپس برای بازيابی , از فيلد مخفی آن مقادير را می خواند و سپس آنھا را از tring به byte در اينجا string است و ممکن است ھرئچيزی باشد)

تبديل می کند.به اين فرايند serialization گفته می شود.مثلا به کلاس بسيار سادهی زير اگر دقت کنيد . ميبينيد که نام کلاس customer است و دو متغير

public دارد يکی FirstName و ديگری LastName و در تابع سازنده اش که دو مقدار  Last و First را می گيرد و در دو متغير public خود قرار می دھد.

Public Class Customer
Public FirstName As String
Public LastName As String
Public Sub New(ByVal first As String, ByVal last As String)
FirstName = first
LastName = last
End Sub
End Class

حال View State به درستی مقادير شما را به توجه به فرايند از پيش تعريف شده ی serialization در خود ذخيره می کند.حال شايد از خود بپرسيد نحوه ی بازيابی اين View State چگونه است!چگونه می توان مقدار stream of bytes را به customer تبديل کرد.حتما تا به حال با تابع مھم CType آشنا شده ايد.اين تابع دو آرگومان ورودی دارد اولی يک متغير با يک نوع داده ای خاص و دومی يک نوع داده ای ديگر که می بايست اولی به دومی تبديل شود .مثلا در کد زير عدد ٤٠٠ که integer است را می خواھيم به string تبديل کنيم:

(CType(400, String

اموزشهای بیشتر طراجی وب سایت در  https://www.asp.net/

اشتراک گذاری پست

1 دیدگاه

  • آرگان پاسخ

    خوب بود اتفاقی از گوگل اومدم اینجا ولی خوب بود برای دوستم فرستادم اونم دنبالشه اونم بیاد ببینه

    ممنون که سرعت سایتتون بالاست برای این تو خیلی از سایتا رفتم ولی سرعت سایتشون بد بود خداروشکر که راحت چیزی که میخواستم پیدا کردم

    ممنون

    مارس 29, 2018 در 11:44 ق.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *