2011-07-28 5 views
1

평범한 초보자 질문에 대한 저를 용서해주십시오.하지만 수업 라이프 사이클 림보에 갇혀있는 것 같습니다.pageload에서 viewstate를로드하고 페이지 언로드 (baseclass에서) - C# Asp.net

public class BasePage : System.Web.UI.Page 
{ 
    private Model _model; 

    public BasePage() 
    { 
     if (ViewState["_model"] != null) 
      _modal = ViewState["_model"] as Modal; 
     else 
      _modal = new Modal(); 
    } 

    //I want something to save the Modal when the life cycle ends 

    [serializable] 
    public class Model 
    { 
     public Dictionary<int, string> Status = new Dictionary<int, string>();    
     ... //other int, string, double fields 
    } 

    public class PageManager() 
    { //code here; just some random stuff 
    } 
} 

지금 난 그냥 생성자에서 할 페이지로드,에 모달를 얻으려면 :

그래서 나는 나의 페이지

public partial class DefaultPage : BasePage 
{ 
    ... 
} 

그리고이 같은베이스 페이지가 있습니다. 페이지를 언로드 할 때 어떻게 저장할 수 있습니까? 소멸자를 신뢰할 수 없으므로 사용할 수 없습니다.

이 시나리오에서 가장 좋은 해결책은 무엇입니까?

감사합니다.

답변

2

LoadViewStateSaveViewState이 이에 대한 적절한 방법입니다. 이러한 방법을 사용

protected override void LoadViewState(object savedState) 
    { 
     base.LoadViewState(savedState); 
     _model= (Model) ViewState["_model"]; 
    } 

    protected override object SaveViewState() 
    { 
     ViewState["_model"] = _model; 
     return base.SaveViewState(); 
    } 

은의 ViewState가 출력 렌더링되기 전에 viewstate가에 필요한 값을 배치 한 것을 당신이 그것에서 값을로드하려고하기 전에의 ViewState가 포스트 백에서로드 된 것을 보장합니다.

+0

안녕하세요, 좋습니다만,''_model''에 액세스 할 때마다''객체 참조가 인스턴스에 설정되지 않았습니다 .'' 예외로 돌아옵니다. – LocustHorde

+1

@LocustHorde : _model은 null 값으로 시작하고 다른 값으로 설정할 때까지 계속 null입니다. '_model'의 값은 어디에서 설정합니까? 어디에서 접속하려고합니까? 중단 점을 설정하여 'LoadViewState' 및'SaveViewState' 호출과 관련하여 이러한 이벤트가 발생하는 시점을 결정할 수 있습니까? – StriplingWarrior

+0

오케이, 내 실수로 페이지로드시 아무것도 설정하지 않았습니다. 고마워, 너는 내가 셀 수있는 것보다 더 많은 시간을 도왔다! – LocustHorde

관련 문제