آموزش WebForm-مدیریت حالت
می توانید با استفاده از نگه داشتن ViewState یک شیء در کدنویسی صرفه جویی زیادی نمایید.
نگه داشتن ViewState
هنگامی که یک فرم در ASP کلاسیک، سمت سرور ارسال می شود، تمام مقادیر فرم پاک می شود. فرض کنید که فرمی با اطلاعات زیاد را به سمت سرور بفرستید و سرور یک خطا به شما بازگرداند. باید بازگردید و خطای فرم را برطرف نمایید. روی دکمه بازگشت کلیک می کنید، و تصور می کنید چه اتفاقی افتاده است. تمام مقادیری که به زحمت وارد کرده بودید، پاک شده است و باید از اول شروع به پر کردن فرم کنید. وبسایت ViewState شما را نگه نداشته است.
هنگامی که یک فرم در ASP.NET ارسال می شود، فرم در پنجره مرورگر با تمام مقادیر نمایش داده می شود. چگونه ممکن است؟ زیرا ASP.NET، در یک صفحه ViewState آن صفحه را نگه می دارد.
ViewState وضعیت صفحه، هنگامی که صفحه به سرور ارسال می شود، را نشان می دهد. وضعیت با یک سری فیلد مخفی که در هر صفحه بین کنترل <form runat="server"> قرار گرفته اند مشخص می شود. Source صفحه باید چیزی مشابه زیر باشد:
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....some code
</form>
در فرم های ASP.NET به طور پیش فرض ViewState حفظ می شود. اگر بخواهید ViewState حفظ نشود، دایرکتیو <%@ Page EnableViewState="false" %> را به بالای صفحه اضافه کنید، یا ویژگی EnableViewState هر کنترل که قصد ندارید ViewState آن حفظ شود را false قرار دهید.
فایل aspx. زیر را ملاحظه فرمایید. روش قدیمی را نشان می دهد. هنگامی که روی یک دکمه کلیک می کنید، مقدار فرم ناپدید می شود.
مثال (آموزش WebForm-مدیریت حالت)
<body>
<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>
</body>
</html>
در مثال زیر روش جدید ASP.NET آورده شده است. هنگامی که یک فرم ارسال می شود، مقادیر فرم ناپدید نمی شود.
مثال (آموزش WebForm-مدیریت حالت)
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>
- نوشته شده توسط مظاهر نصوحی
- بازدید: 10786