ASP.NET - ViewState 유지
- 이전 페이지 WebForms 폼
- 다음 페이지 WebForms TextBox
Web 폼에서 객체의 ViewState를 유지함으로써 많은 코드 작업을 줄일 수 있습니다.
ViewState 유지
classic ASP에서 폼이 제출될 때, 모든 폼 값이 지워집니다. 많은 정보를 포함한 폼을 제출했을 때 서버가 오류를 반환하는 상황을 생각해보세요. 서버가 오류를 반환하면 폼을 다시 입력해야 하며, 정보를 수정해야 합니다. 뒤로 가기 버튼을 클릭하면 어떻게 될까요... 모든 폼 값이 지워지고, 모든 것을 다시 시작해야 합니다. 사이트는 ViewState를 유지하지 않습니다.
ASP.NET에서 폼이 제출될 때, 폼과 모든 폼 값이 함께 다시 나타납니다. 어떻게 가능한 것인가요? 이는 ASP.NET가 ViewState를 유지하기 때문입니다. 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 Web 폼의 기본 설정입니다. 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="제출"> </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="제출" runat="server" /> <p><asp:Label id="lbl1" runat="server" /></p> </form> </body> </html>
이 예제를 표시합니다 왼쪽 프레임에서 "원본 문서 보기"를 클릭하면 ASP .NET이 양식에 숨겨진 필드를 추가하여 ViewState를 유지할 수 있습니다.
- 이전 페이지 WebForms 폼
- 다음 페이지 WebForms TextBox