Asp.Net이 ViewState를 사용하여 페이지의 정보와 클라이언트와 서버 간의 사용자 정의 정보를 저장한다는 것은 누구나 알고 있습니다.
2.0 이전 버전에서는 ViewState가 페이지의 숨겨진 컨트롤에 저장됩니다: __VIEWSTATE
ViewState가 저장되는 방법과 위치를 변경할 수 없습니다.
이제 2.0에서는 Asp.Net에 이 기능이 추가되어 ViewState의 저장 위치를 사용자 정의할 수 있습니다.
2.0에서는 Page 클래스에 PageStatePersister라는 새로운 속성이 추가되었습니다.
이 속성을 재정의하여 사용자 정의 ViewState 저장을 구현할 수 있습니다. 이 속성은 PageStatePersister 클래스에서 상속된 하위 클래스의 인스턴스를 반환합니다.
2.0에서는 기본적으로 페이지에 저장하는 방법(HiddenFieldPageStatePersister)과 세션에 저장하는 방법(SessionPageStatePersister) 두 가지 저장 방법을 제공합니다.
다음 코드는 PageStatePersister 속성을 재정의하고 ViewState를 세션에 저장합니다.
protected override PageStatePersister PageStatePersister
{
얻다
{
새로운 SessionPageStatePersister(this)를 반환합니다.
}
}
이 두 가지 기본 저장 방법 외에도 PageStatePersister 클래스를 상속하여 자체 저장 방법을 구현할 수 있습니다.
다음 코드는 ViewState를 파일에 저장하는 방법을 보여줍니다.
시스템 사용;
System.Data 사용;
System.Configuration 사용;
System.Web 사용;
System.Web.Security 사용;
System.Web.UI 사용;
System.Web.UI.WebControls 사용;
System.Web.UI.WebControls.WebParts 사용;
System.Web.UI.HtmlControls 사용;
System.IO 사용;
System.Runtime.Serialization.Formatters.Binary를 사용합니다.
/**//// <요약>
/// CWingViewState에 대한 요약 설명
/// </summary>
공개 클래스 CWingViewState : PageStatePersister
{
공개 CWingViewState(페이지 페이지):기본(페이지)
{
}
공개 재정의 무효 Load()
{
파일읽기();
}
공개 재정의 무효 저장()
{
쓰기파일();
}
개인 무효 WriteFile()
{
FileStream 파일 = File.Create(@"C:CustomerViewState.CW");
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(file, base.ViewState);
파일.플러시();
파일.닫기();
}
개인 무효 ReadFile()
{
FileStream 파일 = File.OpenRead(@"C:CustomerViewState.CW");
BinaryFormatter bf = new BinaryFormatter();
base.ViewState = bf.Deserialize(파일);
}
}
특정 페이지에서:
보호된 재정의 PageStatePersister PageStatePersister
{
얻다
{
새로운 CWingViewState(this)를 반환합니다.
}
}
출처: .Net 공간 블로그