ASP.NET 웹 양식 - ViewState 유지 관리
ViewState는 웹 양식을 기반으로 합니다. 웹 양식 컨트롤 속성에 runat = "server"를 설정하면 이 컨트롤은 숨겨진 속성인 _ViewState와 함께 연결되어 ViewState에 있는 모든 컨트롤의 상태 값을 저장합니다. 이 섹션에서는 ASP.NET이 ViewState를 유지하는 방법을 소개합니다.
Web Form에서 개체의 ViewState를 유지 관리하면 많은 코딩 작업을 줄일 수 있습니다.
기존 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 Forms의 기본 설정입니다. 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" 값 ="Submit"></form><%dim fnamefname=Request.Form("fname")If fname<>"" ThenResponse.Write("Hello " & fname & "!")End 만약%></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">귀하의 이름: <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>