ASP.NET ViewState- 비활성화 된 경우에도 일부 ViewState가 존재합니다. 왜요?

StackOverflow https://stackoverflow.com/questions/413558

  •  03-07-2019
  •  | 
  •  

문제

페이지에서 EnableViewState 속성이 비활성화 된 경우에도 여전히 페이지에 기존 ViewState가 있습니다.

"<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="VkBAB3n5LZYtY+nTzk1vEu1P/6QLf4qzFIKzpFRJe3DMf8UseUA/1RsO409HJX4QhkROSP0umoJvatjK/q+jXA==" />"

내 질문은 왜 그런가?

도움이 되었습니까?

해결책

이것은 ControlState를 사용하는 컨트롤 일 수 있습니다. 제어 상태가있는 모든 컨트롤은 뷰 스테이트 설정을 무시합니다.

다른 팁

통제 상태입니다.

실제로 ViewState 및 ControlState를 제거하려면 페이지의 코드-비인드 또는 코드 베어드가 얻은 클래스 에서이 코드를 사용할 수 있습니다.

class MyPage : Page {
    private class DummyPageStatePersister : PageStatePersister {
        public DummyPageStatePersister(Page p) : base(p) {}
        public override void Load() {}
        public override void Save() {}
    }
    private DummyPageStatePersister _PageStatePersister;
    protected override PageStatePersister PageStatePersister {
        get {
            if (_PageStatePersister == null)
                _PageStatePersister = new DummyPageStatePersister(this);
            return _PageStatePersister;
        }
    }

    // other stuff comes here
}

그러나 통제와 계약을 위반하고 있기 때문에이 작업을 수행 할 때 매우주의하십시오. MSDN은 제어 상태가 항상 이용 가능하다고 명시 적으로 명시하고 있습니다. 그러나 실제로는 저를 위해 일했습니다.

편집하다:내가 다운 투자를했기 때문에, 나는 다시 지적하고 싶습니다. 당신이 무엇을하고 있는지 정확히 알지 못하면 이것을하지 마십시오. 필자의 경우 거의 전체 응용 프로그램이 클라이언트 측 JavaScript로 작성되었으며 PostBack이 발생한 몇 가지 경우에 항상 요청을 사용하여 값을 검색했습니다. 이렇게하면 서버 측 컨트롤을 사용하지 말고 간단한 렌더링을 사용하지 마십시오.

이 기사는 조금 오래되었지만 대부분의 포인트는 여전히 유효합니다.

  1. ViewState를 사용하려면 ASPX 페이지에 서버 측 양식 태그 ()가 있어야합니다. 뷰 스테이트 정보가 포함 된 숨겨진 필드가 서버에 다시 게시 할 수 있도록 양식 필드가 필요합니다. 또한 서버에서 페이지를 실행할 때 ASP.NET 페이지 프레임 워크가 숨겨진 필드를 추가 할 수 있도록 서버 측 양식이어야합니다.
  2. 이 페이지 자체는 20 개 정도의 정보를 ViewState에 저장하며 Postback 데이터 및 ViewState 값을 Postback시 올바른 컨트롤에 배포하는 데 사용됩니다. 따라서 페이지 나 응용 프로그램에 대해 ViewState가 비활성화 되더라도 ViewState에 남아있는 바이트가 표시 될 수 있습니다.
  3. 페이지가 다시 게시되지 않은 경우 서버 측 태그를 생략하여 페이지에서 ViewState를 제거 할 수 있습니다.

http://msdn.microsoft.com/en-us/library/ms972427.aspx

이것은 절대적으로 환상적인 기사입니다 viewstate ASP.NET에서 개발되면 읽으십시오!

ASP.NET ViewState 도우미 또한 ViewState에서 무슨 일이 일어나고 있는지 보는 좋은 도구입니다.

ControlState가 원인이 될 수 있습니다. 제어 상태는 비활성화 될 수 없습니다. ASP.NET 2.0에는 제어 작업 (ControlState)과 기타 데이터 (ViewState)를 만드는 데 필요한 데이터가 차이가 있습니다.

그리고 그렇습니다. 일부 컨트롤은 ControlState 없이는 작동하지 않습니다. 어떤 원인을 원인인지 또는 viewstate에 포함 된 내용을 알고 싶다면 ViewState Viewer

어떤 제어를 구현합니다 Ipostbackeventhandler 처럼 텍스트 상자, 확인란 등. ViewState를 비활성화 한 후에도 상태를 유지합니다. 그 이유는로드 포스트 백 데이터 단계에서 이러한 컨트롤이 게시 된 백색 양식에서 상태 정보를 얻을 수 있기 때문입니다.

그러나 통제는 좋아합니다 상표 구현하지 않습니다 Ipostbackeventhandler 게시 된 데이터로부터 어떤 상태 정보도 얻지 못하므로 상태를 유지하기 위해 ViewState에 전적으로 의존합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top