-
postback, viewstate, runatASP.NET/.NET 프레임워크 2022. 2. 28. 12:24
[ POSTBACK ]
[정의]
page_load >> if(!IsPostBack)
if(!IsPostBack) : 어떤 값을 되돌려 받은 상태가 아닌 처음 상태라는 뜻
처음에 어떤 값을 if(!IsPostBack) 처리하여 세팅한 후 그 다음부터 PostBack이라 부르고 다시 처리한다는 말
[처리방식]
상태 유지(viewstate)
내가 처음 빈 입력 박스를 가진 페이지의 상태를 봤다면 서버에서 다시 전송하더라도 그대로 보여지려고 한다.
단지 내가 입력한 값을 서버쪽에서 받아서 그 자리에 다시 넣어 줘야 그 입력값이 그대로 있는 것처럼 보이게 할 수 있기 때문이다.
이렇게 클라이언트가 입력한 상태를 유지하게끔 하는 것을 상태유지라 한다.
<input type="hidden" name="__VIEWSTATE" value="dDwxNjA3MDUxODQ5OztsPFdlYkVkaXRvcjE6Y2JveF9pc0JhY2s7Pj5HLPZB049lI/uzvKXQt10FFyr9NA==" /> Base64인코딩으로 되어져 있다.
여기에 어떤 정보가 담기고 다시 그 값을 받았을 때 포스트백 되었다고 한다.
(처음 로딩 후 __VIEWSTATE 에 어떤 값을 넣었다가 다시 받았을 때 포스트백이라 한다.)
submit했을 때 이 값(__VIEWSTATE)이 다시 날아가지 않고 기본적인 HTML의 hidden값으로 서버로 전송되고 서버는 이 값을 사용하므로 포스트백 되었다고 할 수 있다.
처음 로딩시에만 데이터를 가져 오도록 if(!IsPostBack)에만 데이터를 가져 오도록 해야 할 것이다.
[ viewstate ]
페이지가 다시 로딩 될 때(버튼 클릭, 새로고침 등) 변수의 데이터가 날아가고 처음 값으로 셋팅된다.
만약 페이지가 재로딩 되더라도 상태 값을 저장하고 싶다면
Page 객체가 제공하는 ViewState컬랙션을 사용하면 좋다.
Key, Value로 상태를 저장하면 된다.
동일 페이지 내에서만 적용 (다른 페이지 간 이동 시 유지되지 않는다.)
[ runat ] - 서버 컨트롤
runat : 어디에서 실행되느냐에 따라 속성이 달라진다.
서버측 컨트롤 : runat = "server"
클라이언트 컨트롤 : runat = "client"
'ASP.NET > .NET 프레임워크' 카테고리의 다른 글
Infragistics - Grid 기본 (0) 2022.03.04 List<T> 클래스 (0) 2022.03.02 C# - Linq (0) 2022.02.28 asp.net 관련확장자 (0) 2022.02.28 Page_load 및 Page클래스 (0) 2022.02.23