دوره های آموزشی
خانه / Asp Form / View State چیست و چگونه در ASP.Net کار می کند

View State چیست و چگونه در ASP.Net کار می کند

یک برنامه وب ناپایدار است به این معنی هر بار که یک درخواست از سرور جهت دریافت یک صفحه می کنیم یک نمونه جدید از آن صفحه ساخته می شود و در این  رفت و برگشت صفحه قبلی از بین می رود. دلیل این اتفاق هم این است که سرور همه کنترل های ایجاد شده صفحه را بعد از رفت و برگشت نابود می کند.بنابراین برای حفظ مقادیر کنترل ها از تکنیک مدیریت وضعیت (state management) استفاده می کنیم.

تکنیک مدیریت وضعیت

مدیریت وضعیت به 2 دسته تقسیم می شود :

statemgmt1

 

 

 

 

 

 

 

 

 

 

 

 

اکنون به شرح View Sate  می پردازیم:

View State

View State روشی برای حفظ کردن مقادیر صفحه و کنترل ها هنگام  رفت و برگشت صفحه است. که جزء تکنیک های مدیر وضعیت در سطح صفحه است. View State به طور پیش فرض فعال است و بطور معمول داده های هر کنترل صفحه را سریال می کند بدون در نظر گرفتن اینکه آن صفحه    post-back باشد.

برای درک بهتر یک پروژه ایجاد می کنیم تا ببینیم بدون View State چه مشکلاتی ایجاد می شود :

1- یک پروژه از نوع  ASP.NET Empty Web Application ایجاد کرده و یک فرم وب (Web Form) به آن اضافه کنید.

2- 2 تکست باکس و 2 دکمه به صفحه اضافه کنید .کدهای صفحه باید به شکل زیر باشد :

حال کد های زیر را بنویسید :
خروجی باید به شکل زیر باشد:

ViewState1

ViewState5

 

 

 دلیل این اتفاق این است که همه کنترل هاکلاس هایی هستند که  برروی سرور ایجاد می شوند و بعد اینکه صفحه با فرمت HTML  به کاربر برگشت می شود همه اشیاء موجود در سرور از بین می رود.

بعد از اینکه برروی دکمه Submit کلیک می کنیم مقدار user name و password  به سرور ارسال می گردد و ما نمی توانیم مقدار آن را بازیابی کنیم زیرا بعد از postback  نمونه کنترل ایجاد شده از بین می رود و با کلیک کردن برروی دکمه  Restore سرور درخواست جدید دریافت می کند و نمی تواند مقدار TextBox را بازیابی کند.

ویژگی های View State

سه  ویژگی اصلی  view state :

  1. مقدار کنترل های را بعد از post-back بدون استفاده از session حفظ می کند.
  2. مقادیر صفحات و ویژگی کنترل های  تعریف شده در صفحه را ذخیره می کند.
  3. یک Provider سفارشی View State ایجاد می کند که این امکان را به شما می دهد اطلاعات View State را در پایگاه داده ذخیره کنید.

حال به نحوه ذخیره کردن مقدار در View State در مراحل قبل می پردازیم :

این کدها را وارد کنید :

خروجی باید به شکل زیر باشد :

ViewState1

ViewState4

 

بعد از کلیک برروی دکمه Submit مقدار user name و password به  View State تحویل داده می شود و  View State مقدار آنها را در طی فرایند post-back ذخیره میکند.

بعد از کلیک برروی دکمه Restore ما می توانیم به این مقادیر دست پیدا کنیم . مقادیر در طی فرایند post-back حفظ شده و در یک فیلد مخفی که به صروت رشته است ذخیره می گردد.

مزایای View state :

  1. راحتی در استفاده.
  2. نیاز به منابع سرور نیست : View State در سختار  page load قرار دارد.
  3. بهبود امنیت : می توان آن را رمز گزاری و رمز گشائی کرد.

معایب View state :

  1. ریسک امنیتی : اطلاعات View state  در سورس صفحه وب قابل روئیت است . شما می توانید آنها را رمز گزاری و رمز گشائی کنید. بنابراین برای  اطلاعات حساس از این روش استفاده نکنید.
  2.  Performance (کارایی)  : در صورتیکه اطلاعات زیادی داریم نباید از این تکنیک استفاده کنیم چون View state همه آنها را در صفحه ذخیره می کند و این باعث می شود که لود صفحه کند شود.
  3. محدودیت Device : موبایل ها شاید به اندازه کافی حافظه برای ذخیره میزان زیاد داده   View state را نداشته باشند.
  4. از آن تنها برای ذخیره مقادیر صفحات کوچک استفاده می شود.

چه مواقعی باید از View State استفاده کرد:

  1. وقتی مقدار داده کم باشد
  2. عدم استفاده از داده های امن

 نحوه فعال و غیر فعال کردن View State

View State را می توان در یک کنترل و یا  در تمام صفحه فعال یا غیر فعال کرد برای غیر فعال کردن View State در یک کنترل مقدار پراپرتی EnableViewState برابر false قرار می دهیم.

TextBox1.EnableViewState=false

برای غیر فعال کردن View State در کل صفحه مقدار EnableViewState در کد صفحه false قرار می دهیم مانند کد زیر :

<%Page Language=”C#” EnableViewState=”false”

درباره ی محمد آذرنیوا

مدیر یت آکادمی برنامه نویسان

همچنین ببینید

فیلم آموزش برنامه نویسی

فیلم آموزشی SQL Server 2014 / ASP.NET/CSS/jQuery

فیلم آموزشی SQL Server 2014 / ASP.NET/CSS/jQuery چرا باید  SQL Server و  Visual Studio را ...

پاسخ دهید

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