검색결과 리스트
ViewState에 해당되는 글 2건
- 2009/06/26 ViewState값을 이용하지 않고 DropDownList의 선택된 값 가져오기
- 2009/06/21 ASP.NET 상태관리하기
글
보통 DropDownList Control의 ViewSate값을 false로 설정을 하고, 버튼컨트롤의 클릭이벤트와 같은 포스트백 이벤트나, PageLoad에서 DropDownList의 선택된 값을 가져오려고 한다면, 원하는 결과를 얻을 수가 없다. 그 이유는 페이지의 Load 이벤트에서 OnLoad 이벤트를 호출하게 되는데, OnLoad이벤트가 하는 일중의 하나는 뷰상태가 복원이 되는 것이다. OnLoad에 대한 자세한 설명은(http://msdn.microsoft.com/ko-kr/library/system.web.ui.control.onload.aspx)이곳에 가면은 자세히 알 수가 있다.
그럼 어디서 값을 가져와야 할것인가가 문제이다. 저는 여기서 이 문제를 해결하기 위해서, Init이벤트에서 선택된 값을 가져와서 변수에 저장을 하였습니다. PreInit의 경우 컨트롤을 초기화 해주기 전이므로 DropDownList컨트롤이 null 상태이다. 그럼 간단히 소스를 보면,
ddlSeries, ddlGrade, ddlType는 DropDownList의 각각의 ID값이다. UniqueID는 각 DropDownList가 html 코드로 바뀌게 되면서 id값과 name 값이 바뀌게 되는데, ClientID는 id값, UniqueID는 name값이라 생각하면은 될듯하다.
설정
트랙백
댓글
글
웹 페이지는 Stateless 상태이다. 서버가 클라이언트의 브라우져에게 응답을 하여 페이지를 보내주면 브라우져는 이에 응답하여 페이지를 보여주게 되고, 이후 페이지의 상태변화에 따른값은 저장하지 않는다. 그래서 일반적으로 PostBack일어나면 기존의 저장되어있는 상태값들은 유지가 되지 않는다.
하지만 상태값을 유지해야 할 필요성이 있는 컨트롤들이 많다. 이런것을 위해서 ASP.NET의 경우 ViewState라는 것을 지원하고, 기본적으로 클라이언트측 상태관리 옵션은 Hidden Field, Cookie, Query String가 있다.
ViewState같은 경우 ASP.NET에서 자동으로 관리를 해준다. 그래서 사용을 할때 그냥 아무런 생각없이 사용하면은 된다. 자동적으로 다 해주니까... 하지만 이건 문제가 상당히 많다.. ViewState를 사용한 소스를 보면 Hidden Field의 값을 보면 상당히 길다.. 그리고 모든 서버 컨트롤의 ViewState를 사용하는 기본 옵션인 EnableViewState값은 true이다. 그래서 내가 생각하고 있지 않지만 Hidden Field값으로 상태유지되는 컨트롤들이 상당히 있다.
이렇게 많이 사용되는 값들은 매번 PostBack마다 서버에 전송되게 되고, 이러한 상황이 되면 웹페이지가 느리게 된다. 간혹 ViewState에 대한 설명을 보면 HiddenField보다 보안이 강화되었다는 말을 들을 수가 있다. Hidden Field보다 보안이 강화된것은 사실이지만, Base64로 인코딩 되어있다는 사실은 이미 알려져 있고, 간단하게 디코딩만 하면은 ViewState값은 알 수가 있다.
그래서 나는 쓸데 없이 길기만 하고, 미미한 보안기능을 사용할 바에는 조금이나마 길이가 짧고 서버에게 전송하는 양이 적은 Hidden Field나 Query String을 사용하는게 낫지 않을까 하는게 나의 생각이다.
오랜만에 포스트지만 오래 글을 못쓰겠다.
다음 포스트에서는 프로그램도 만들어 봐야겠다.
RECENT COMMENT