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

در این مقاله از آموزش ASP.NET به معرفی View State خواهیم پرداخت و خواهیم گفت View State چیست و چگونه در ASP.Net کار می کند.

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

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

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

View State چیست

 

 

 

 

 

 

 

 

 

 

 

 

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

View State چیست ؟ 

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

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

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

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

<%@ page language="C#" autoeventwireup="true" codebehind="WebForm6.aspx.cs" inherits="view_state.WebForm6" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        User Name:-<asp:textbox id="TextBox1" runat="server"></asp:textbox>
        <br />
        Password&nbsp; :-<asp:textbox id="TextBox2" runat="server"></asp:textbox>
        <br />
        <asp:button id="Button1" runat="server" onclick="Button1_Click" text="Submit" />
        <asp:button id="Button3" runat="server" onclick="Button3_Click" text="Restore" />
    </div>
    </form>
</body>
</html>

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

//Declaration of a and b
public string a, b;
protected void Button1_Click(object sender, EventArgs e)
{
    //TextBox1 and TextBox2 Value is Assigning on the variable a and b
    a = TextBox1.Text;
    b = TextBox2.Text;
    //after clicking on Button TextBox value Will be Cleared
    TextBox1.Text = TextBox2.Text = string.Empty;
}
 
protected void Button3_Click(object sender, EventArgs e)
{
    //value of variable a and b is assingning on TextBox1 and Textbox2
    TextBox1.Text = a;
    TextBox2.Text = b;
}

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

آموزش ASP.NET

ASP.NET

 

 

 دلیل این اتفاق این است که همه کنترل هاکلاس هایی هستند که  برروی سرور ایجاد می شوند و بعد اینکه صفحه با فرمت 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 در مراحل قبل می پردازیم :

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

protected void Button1_Click(object sender, EventArgs e)
{
    //Value of Textbox1 and TectBox2 is assigin on the ViewState
    ViewState["name"] = TextBox1.Text;
    ViewState["password"] = TextBox2.Text;
    //after clicking on Button TextBox value Will be Cleared
    TextBox1.Text = TextBox2.Text = string.Empty;
}
protected void Button3_Click(object sender, EventArgs e)
{
    //If ViewState Value is not Null then Value of View State is Assign to TextBox
    if (ViewState["name"] != null)
    {
        TextBox1.Text = ViewState["name"].ToString();
    }
    if (ViewState["password"] != null)
    {
         TextBox2.Text = ViewState["password"].ToString();
    }
}

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

آموزش asp.net با c#

آموزش گام به گام طراحی سایت با asp net

 

بعد از کلیک برروی دکمه 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”

ورکشاپ رایگان دوره های تخصصی برنامه نویسی

شما این فرصت را دارید، با تکمیل فرم زیر، قبل از انتخاب دوره آموزشی مناسب خود، در ورکشاپ رایگان دوره های تخصصی برنامه نویسی شرکت کنید
  • این فیلد برای اعتبار سنجی است و باید بدون تغییر باقی بماند .

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

من محمد آذرنیوا، نویسنده و مدرس دوره های برنامه نویسی ، طراحی وب و تحلیل گر پایگاه داده هستم و قصد دارم در این وبسایت مطالب کاربردی در این زمینه را با شما به اشتراک بگذارم ...

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

دوره آموزش طراحی سایت با ASP.NET مشهد

آموزش طراحی سایت با ASP.NET مشهد

آموزش طراحی سایت مشهد (دوره آموزشی) : تکنولوژی ASP.NET ، یک تکنولوژی روز برای ساخت صفحات …

یک نظر

  1. کاملا متوجه شدم
    بسیار خوب توضیح دادید
    متشکرم

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

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