ASP.NET - حفظ ViewState

با حفظ ViewState (وضعیت دید) اشیاء در فرم‌های وب، می‌توانید حجم زیادی از کدنویسی را کاهش دهید.

حفظ ViewState (وضعیت دید)

وقتی فرم در classic ASP ارسال می‌شود، تمام مقادیر فرم پاک می‌شوند. تصور کنید که شما یک فرم با اطلاعات زیادی ارسال کرده‌اید و سرور یک خطا بازگردانده است. شما باید فرم را بازگردانید و اطلاعات را تصحیح کنید. شما دکمه بازگشت را کلیک می‌کنید، سپس چه اتفاقی می‌افتد... تمام مقادیر فرم پاک می‌شوند و شما باید همه چیز را از نو شروع کنید. وب‌سایت ViewState شما را حفظ نمی‌کند.

وقتی فرم در ASP.NET ارسال می‌شود، فرم با تمام مقادیر فرم دوباره ظاهر می‌شود. چگونه این کار انجام می‌شود؟ این به دلیل حفظ ViewState توسط ASP.NET است. ViewState در هنگام ارسال صفحه به سرور وضعیت آن را نشان می‌دهد. با قرار دادن یک فیلد مخفی در هر صفحه در یک کنترل <form runat="server">، می‌توانیم وضعیت صفحه را تعریف کنیم. کد منبع ممکن است مشابه این باشد:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....کد بعضی
</form>

حفظ ViewState تنظیم پیش‌فرض فرم‌های وب ASP.NET است. اگر نمی‌خواهید ViewState را حفظ کنید، دستور زیر را در بالای صفحه .aspx درج کنید: <%@ Page EnableViewState="false" %>، یا برای هر کنترل به عنوان ویژگی اضافه کنید: EnableViewState="false".

لطفاً به فایل زیر .aspx نگاه کنید. این فایل روش قدیمی اجرا را نشان می‌دهد. هنگامی که شما دکمه ارسال را کلیک می‌کنید، مقادیر فرم ناپدید می‌شوند:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
نام شما: <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 است. هنگامی که دکمه ارسال را کلیک می‌کنید، مقادیر فرم محو نمی‌شوند:

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
<html>
<body>
<form runat="server">
نام شما: <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>

این مثال را نمایش دهید لطفاً در فیملی که در سمت راست کلیک کنید، روی "مطالعه مستند اصلی" کلیک کنید، تا ببینید که ASP .NET یک فیلد مخفی به فرم اضافه کرده است تا ViewState را حفظ کند.