ASP.NET - ViewState Koruma

Web formunda nesnelerin ViewState (görünüm durumu) korumasını sağlayarak, büyük miktarda kodlama çalışmasını önleyebilirsiniz.

ViewState (Görünüm Durumu) Koruma

Classic ASP'teki bir formun gönderildiğinde, tüm form değerleri temizlenir. Bir formu, büyük miktarda bilgi içeren bir formu gönderdiğinizi ve sunucunun bir hatayla geri döndüğünü hayal edin. Formu geri döndüğünüzde, içindeki bilgileri düzeltmek zorunda kalırsınız. Geri butonuna tıkladığınızda ne olur?... Tüm form değerleri temizlenir ve tümü yeniden başlamak zorunda kalırsınız. Site ViewState'ınızı korumaz.

ASP .NET'teki bir formun gönderildiğinde, form tüm form değerleriyle birlikte yeniden ortaya çıkar. Bu nasıl yapılır? Bu, ASP .NET'inViewState'ı korumasından kaynaklanır. ViewState, sayfa sunucuya gönderildiğinde durumunu belirtir. Her sayfada bir <form runat="server"> denetleyicisi içinde bir gizli alan yerleştirerek sayfa durumunu tanımlayabiliriz. Kaynak kodu aşağıya benzer olabilir:

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

ViewState'ın korunması ASP.NET Web formlarının varsayılan ayarıdır. ViewState'ın korunmasını istemiyorsanız, .aspx sayfasının üstüne aşağıdaki talimatı ekleyin: <%@ Page EnableViewState="false" %> veya herhangi bir denetleyiciye aşağıdaki özelliği ekleyin: EnableViewState="false".

Aşağıdaki .aspx dosyasına bakın. Eski çalışma yöntemini gösterir. Submit butonuna tıkladığınızda, form değerleri ortadan kaybolur:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Adınız: <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>

Bu Örneği Göster

Bu yeni ASP .NET yöntemidir. Submit butonuna tıkladığınızda, form değerleri kaybolmaz:

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

Bu Örneği Göster (Sağdaki çerçevede 'Görüntüleme Dosyasını' tıklayarak ASP .NET'in form'a gizli bir alan eklediğini görebilirsiniz, böylece ViewState'i sürdürebilirsiniz。)