نگه داشتن ViewState

این تاپیک 0 پاسخ و 1 مشارکت کننده دارد . آخرین آپدیت توسط :  صبا ...saba ،‏ 7 ماه و 3 هفته پیش .

این تاپیک تاکنون 46 بازدید داشته است .

نویسنده پست
جمعه ، 15 آوریل 2016     1:41 ق.ظ #


صبا ...saba

Subscriber
0 پست669 تاپیک

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

هنگامی که یک فرم در ASP.NET ارسال می شود، فرم در پنجره مرورگر با تمام مقادیر نمایش داده می شود. چگونه ممکن است؟ زیرا ASP.NET، در یک صفحه ViewState آن صفحه را نگه می دارد.

ViewState وضعیت صفحه، هنگامی که صفحه به سرور ارسال می شود، را نشان می دهد. وضعیت با یک سری فیلد مخفی که در هر صفحه بین کنترل <form runat="server"> قرار گرفته اند مشخص می شود. Source صفحه باید چیزی مشابه زیر باشد:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />

.....some code

</form>

در فرم های ASP.NET به طور پیش فرض ViewState حفظ می شود. اگر بخواهید ViewState حفظ نشود، دایرکتیو <%@ Page EnableViewState="false" %> را به بالای صفحه اضافه کنید، یا ویژگی EnableViewState هر کنترل که قصد ندارید ViewState آن حفظ شود را false قرار دهید.

فایل aspx. زیر را ملاحظه فرمایید. روش قدیمی را نشان می دهد. هنگامی که روی یک دکمه کلیک می کنید، مقدار فرم ناپدید می شود.

مثال
<html>
<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 آورده شده است. هنگامی که یک فرم ارسال می شود، مقادیر فرم ناپدید نمی شود.

مثال
<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>

0  تشکر
پست 1 تا 1 (از مجموع 1 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .