ViewState와 PostBackViewState와 PostBack
Posted at 2008/06/24 08:32 | Posted in Dev/ASP.NET첨엔 대충 넘어가실수 있지만 조금 익숙해졌다 싶을때쯤이면..
그때부턴 에러나 원하는 값이 안나온느경우의 30%이상이 PostBack부분때문입니다.
asp.net으로 넘어오면서 asp에서는없던 ViewState라는 것이 새로생겼습니다.
기본적으로 web페이지는 상태를 유지할수 없죠..
페이지를 재로딩하면 모든 페이지 값들이 새롭게 생성이 되면서 기본값으로 셋팅이 되었었죠.
것땜에 asp프로그램할때는 그 상태를 유지하기위해 엄청 노가다성 코딩이 많았습니다.
하지만 asp.net에서는 기본적으로 ViewState라는게 생겨서 현재 페이지의 값을 hidden태그에 담아서 저장하고있다가
포스트백이 일어났을경우 페이지가 랜더링되는 시점에서 해당 상태값을 ViewState에서 찾아와 페이지에 뿌려주게 됩니다.
포스트백의 경우에만 그렇습니다. Redirect의 경우엔 페이지를 첨 로딩한것이 되니 당근 ViewState의 값도 없으니 상태값이고 뭐고 없는게 되죠..
이부분을 이해하신다면 상태가 유지되니까...
예를들어서 첨 페이지가 로딩되서 데이터그리드에 값을 넣어준다음에 포스트백이 되었을때...
이경우 데이터그리드에 값을 다시 바인딩 시켜줘야 할까요..아님 그냥 놔둬도 될까요?
답은 ViewState를 사용한다면 다시 값을 바인딩 시켜줄 필요가 없다는얘기가 됩니다.
보통의 경우 데이터그리드에 바인딩될 값들은 데이터베이스에서 레코드를 가져와 바인딩 하게되죠..
그럼 ViewState를 이용하면 포스트백이 되었을경우엔 데이터베이스에서 다시 레코드를 가져올 필요가 없다는 얘기가 되겠죠..
이부분 잘 이해하셔야 합니다..
그래서..Page_Load()에서
if(!IsPostBack)
{
데이터그리드 바인딩
}
이렇게 코딩을 하죠..
주의할점은 페이지나 컨트롤 속성으로 ViewState를 사용하겠다고 설정이 되어있어야합니다.
컨트롤별로 혹은 페이지단에서 ViewState를 사용하지 않겠다고 설정을 할수가 있거든요..
첨엔 감이 안오셔도 테스트코딩도 많이 해보시고 감을 잡으려고 노력해보세요..
'Dev > ASP.NET' 카테고리의 다른 글
| asp.net DataGrid를 간단하게 Excel로 변환하기 (2) | 2008/12/08 |
|---|---|
| 닷넷은 새로고침과 PostBack 을 구별하지 못한다. (0) | 2008/12/08 |
| .net deligate (0) | 2008/07/03 |
| .net base 키워드 (0) | 2008/07/03 |
| .Net this 키워드 (0) | 2008/07/03 |
| ViewState와 PostBack (0) | 2008/06/24 |

