Web フォームのビューステート
ASP.NET Web フォーム - ViewState を維持する
Web フォーム内のオブジェクトの ViewState を維持することで、コーディング作業を大幅に節約できます。
ViewState を維持する
クラシック ASP では、フォームが送信されると、すべてのフォーム値がクリアされます。大量の情報を含むフォームを送信すると、サーバーからエラーが返されたとします。情報を修正するにはフォームに戻る必要があります。 「戻る」ボタンを押すと何が起こりますか...すべてのフォーム値がクリアされ、すべてを最初からやり直す必要があります。サイトは ViewState を維持していません。
ASP .NET では、フォームが送信されると、フォーム値とともにフォームがブラウザー ウィンドウに表示されます。どうやって?これは、ASP .NET が ViewState を維持するためです。 ViewState は、サーバーに送信されたときのページの状態を示します。この状態は、<form runat="server"> コントロールを使用してすべてのページに隠しフィールドを配置することで定義されます。ソース コードは次のとおりです。
<input type="hidden" name="__VIEWSTATE "
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
....一部のコード
</form>
ViewState の維持は、ASP.NET Web フォームのデフォルト設定です。 ViewState を維持したくない場合は、.aspx ページの先頭にディレクティブ <%@ Page EnableViewState="false" %> を含めるか、プロパティ EnableViewState="false" をコントロールに追加します。
以下の .aspx ファイルをご覧ください。これは「古い」操作方法を示しています。送信ボタンをクリックすると、フォームの値が消えます:
インスタンス
<!DOCTYPE html> <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> <!DOCTYPE html> <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>
インスタンスの実行 »
「インスタンスの実行」ボタンをクリックしてオンラインインスタンスを表示します