( تعداد نمایش : 633 )

ViewState و نگهداری مقادیر فرمها – قسمت اول

\در ASP کلاسیک بعد از تائید یک فرم اطلاعات ورودی از بین می رود. برای رفع این عیب در ASP.NET از ViewState استفاده می شود.

——————————————————————————–
دکمه Back را فشار دهید… چه اتفاقی افتاده است؟ بله همه داده های ورودی پاک شده و شما مجبورید دوباره از ابتدا شروع کنید. این صفحه از ViewState پشتیبانی نمی کند!

در ASP.NET وقتی یک فرم تائید (ارسال) می شود اگر دوباره به صفحه حاوی فرم برگردید فرم را با تمام داده های ورودی مشاهده خواهید کرد. چطور!؟ به این دلیل که ASP.NET بطور خودکار و با کمک ViewState مقادیر ورودی شما را نگهداری می کند. درواقع ViewState وضعیت مقادیر موجود در یک صفحه را هنگام تائید و ارسال صفحه به سرویس دهنده (سرور)، نگهداری می کند. طرز کار بسیار ساده است: این عمل با قرار دادن یک فیلد مخفی (Hidden Field) انجام می شود. این فیلد به هر صفحه ای که شامل تگ <Form runat=”server”> باشد، بطور خودکار و توسط ASP.NET افزوده خواهد شد. کدی که اضافه می شود شبیه به کد زیر می باشد:

<Form name=”_ct10″ method=”post” action=”page.aspx” id=”_ct10″>
<input type=”hidden” name=”__VIEWSTATE” value=”dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q” />
some code
</form>
نگهداری ViewState یکی از تنظیمات پیش فرض ASP.NET برای WebForm ها می باشد. اگر شما نیازی به ViewState ندارید دستور رهنمون یا Directive زیر را به بالای صفحه aspx خود اضافه کنید:

<% @Page EnableViewState=”false” %>
همچنین می توانید صفت EnableViewState را برای کنترل مورد نظر خود تنظیم نمائید.

[ASPX page]
<asp:label id=”myLabel” runat=”server” EnableViewState=”false”></asp:label>

[codebehind]
myLabel.EnableViewState = false

در ادامه مثالی جهت آزمایش ViewState ارائه می شود:

<script runat=”server”>
Sub submit(sender As Object, e As EventArgs)
lbl1.Text=”Hello ” & txt1.Text & “!”
End Sub
</script>
<html>
<body>
<form runat=”server”>
Your name: <asp:TextBox id=”txt1″ runat=”server” />
<asp:Button OnClick=”submit” Text=”Submit” runat=”server” />
<p><asp:Label id=”lbl1″ runat=”server” /></p>
</form>
</body>
</html>

دیدگاه خود را بیان کنید.

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