ASP.NET - ViewState 유지

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를 유지할 수 있습니다.