2012-09-10 2 views
0

이 문서의 내용 http://www.devx.com/vb2themax/Tip/18714 "EnableViewState 속성으로 성능 향상"어디에서 EnableViewState를 false로 설정할 수 있는지 알 수 없습니다. 그들은 단지포스트 백과 뷰 상태 (DataGrid) 간의 관계

If Not Me.IsPostBack() Then 
... 
DataGrid1.DataBind() 

이 ViewState에 같은 다시 게시가 무엇입니까?

왜 DataView 컨트롤에서 EnableViewState = false가 아닌가?

+1

이것은'.aspx' 파일에 설정되어 있다고 가정합니다. – user1429080

답변

0

이 기사에서는 "ViewState"를 활성화 한 첫 번째 예제 (끝내려는 부분)가 일반적으로 완료되었다고 분명히 설명합니다. 연속적인 포스트 백이 저장된 ViewState에서 그리드 데이터를 복원하기 때문에 첫 번째 요청 만 그리드를 데이터 소스에 바인딩해야하기 때문에 (IF Not Me.IsPostBack()).

Page_Load 메서드의 두 번째 예제는 .aspx 파일에서 ViewState가 해제되어 있고 페이지가로드 될 때마다 눈금을 데이터 소스에 바인딩한다고 가정합니다.

Me.IsPostBack에 대한 호출은 폼에 http 포스트를 통해 액세스했는지 확인하는 반면 ViewState는 ASP.NET 서버 컨트롤의 시각적 표현과 관련된 모든 정보를 저장하는 개체입니다. 그래서, 아니, 그들은 동일하지 않습니다!

0

그리드 컨트롤은 많은 컨트롤의 컨테이너 역할을합니다. 각 컨트롤은 많은 정보를 ViewState에 저장합니다.

기본적으로 ViewState는 숨겨진 컨트롤에 저장됩니다. 즉, 모든 페이지 요청시 클라이언트에 전송됩니다. 이 오버 헤드를 피하려면 EnableViewState를 false로 설정할 수 있습니다.

<asp:GridView ID="GridView1" runat="server" EnableViewState="false"> 

ViewState와 PostBack은 완전히 관련이없는 두 개의 엔티티입니다. ViewState는 컨트롤에서 유지하려고하는 모든 정보를 저장합니다. 포스트 백은 정보를 페이지로 다시 보내는 사용자를 나타냅니다.

그러나 ViewState는 마지막 PostBack에서 사용자가 입력 한 값을 기억하는 데 매우 유용합니다. ViewState가 매우 크고 사용자에게 보내지 않으려면 Session에 저장하는 것이 좋습니다. 당신은 SessionPageStatePersister는 데이터를 저장하는 브라우저 세션과 관련된 서버 세션을 사용 SessionPageStatePersister

에 PageStatePersister을 설정하여이 작업을 수행 할 수 있습니다. 숨김 필드 대신 세션을 사용하면 페이지 크기가 증가하고 브라우저에서 이 증가하지 않습니다. 대부분의 경우 페이지 상태는 전체 마크 업의 상당 부분 인 입니다. 그러나이 데이터를 세션 에 저장하면 소중한 서버 리소스가 낭비됩니다.