最新のWeb開発のチュートリアル
 

ASP.NET Webフォーム - のViewStateを維持


あなたのWebフォーム内のオブジェクトのViewStateのを維持することにより、コードの多くを保存することがあります。


ViewStateのを維持します

フォームは、従来のASPに送信されると、すべてのフォームの値がクリアされています。 あなたは多くの情報を持つフォームを提出したとサーバがエラーで戻ってくるとします。 あなたは戻ってフォームにアクセスし、情報を修正する必要があります。 あなたは、戻るボタンをクリックして、何が起こるか....... ALLフォームの値がクリアされ、あなたはすべて最初からやり直す必要があります! サイトでは、あなたのViewStateを維持しませんでした。

フォームがASP .NETで提出された場合、フォームは、すべてのフォームの値と一緒にブラウザウィンドウで再表示されます。 どうして? ASP .NETは、あなたのViewStateを維持するためです。 サーバーに送信するときのViewStateは、ページの状態を示します。 ステータスは、<フォームにrunat =「サーバー」>制御と各ページに配置された隠しフィールドによって定義されます。 ソースは次のようなものになります:

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

.....some code

</form>

ViewStateのを維持することは、ASP.NET Webフォームのデフォルト設定です。 あなたはViewStateのを維持しないようにしたい場合は、.aspxページの上部にあるディレクティブ<%@ページEnableViewState =「false」に%>を含めるか、または任意のコントロールに属性EnableViewState =「false」に追加します。

次の.aspxファイルを見てください。 それは実証"old"それを行うための方法を。 あなたが送信ボタンをクリックすると、フォームの値が消えます。

<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の方法です。 あなたが送信ボタンをクリックすると、フォームの値が消えません。

ASP .NETは、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>
»例を表示