ViewState چيست؟

ViewState

 

يكي از روش هاي ذخيره اطلاعات در صفحات وب ذخيره خود آنها درون صفحه مي باشد، بدين منظور از كلاسي به نام ViewState استفاده مي كنيم.

Asp.net به طور پيش فرض وضعيت تغيير يافته هر صفحه را درون خود آن صصفحه ياداشت مي كند، اين يادداشت ها به صورت رمز در آمده و قابل خواندن توسط كاربر نمي باشد، به صورت پيش فرض ViewState در كليه صفحات وب Asp.net فعال مي باشد و اين امر باعث طولاني شدن كد درون صفحه و سنگين شدن صفحه مي شود. برا غير فعال كردن اين قابليت توصيه مي شود درون صفحات aspx و در قسمت هدر صفحه خاصيت زير را وارد كنيد:

<%@ Page Language=”C#” AutoEventWireup=”true” ViewStateMode=”Disabled” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>

 

براي كنترلي كه مي خواهيم فقط وضعيت آن به سرور ارسال شود(مثلا Literal) كافيست خاصيت ViewStateMode آن را Enable كنيم.

طريقه ايجاد يك ViewState: كد زير را در رويداد Load تعريف مي كنيم:

if (ViewState[“C”] == null)

            ViewState.Add(“C”, 0);

 

هنگامي كه صفحه ايجاد مي شود ابتدا بررسي مي كند ViewState اي به نام C دارد يا نه در صورتي كه نداشته باشد ViewState آن را ذخيره مي كند، چرا كه رويداد Load همواره اجرا مي شود چه صفحه براي اولين بار باشد كه اجرا مي شود و يا صفحه توسط كليك بر روي صفحه PostBack شده باشد.

مي توان با استفاده از كد زير بررسي نمود كه آيا صفحه براي بار اول است كه اجرا مي شود و يا PostBack شده است:

if (!IsPostBack)

        {

            ViewState.Add(“C”, 0);

        }

 

جهت خواندن محتويات يك ViewState مي توان به صورت زير عمل نمود:

Literal1.Text = ViewState[“C”].ToString();

 

كدهاي فوق تا زماني كار مي كند كه ViewState صفحه را Disable نكرده باشيم پس از غير فعال كردن وضعيت صفحه ديگر كدهاي بالا كار نخواهد كرد، جهت رفع آن كافي است از كنترلي به نام hidden field استفاده كنيم، مثلا:

HiddenField1.Value = “0”;

دیدگاه ها بسته شده است