2011-07-28 5 views
1

世俗的な初心者の質問をしてくれましたが、私はクラスのライフサイクルリムーバに詰め込まれているようです。pageloadでビューステートを読み込み、ページをアンロードする(ベースクラスから) - c#Asp.net

だから私はこのような

public partial class DefaultPage : BasePage 
{ 
    ... 
} 

そして、BasePageクラスの私のページを持っています。今、私はちょうど私は、コンストラクタから行うれ、ページのロードにモーダルを取得したい

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 
    } 
} 

。 ページをアンロードするにはどうすればできますか?私はデストラクタを使用することはできません。信頼できません。

このシナリオの最適な解決策は何ですか?

ありがとうございました。

答えて

2

LoadViewStateおよびSaveViewStateは、これに適した方法です。これらの方法を使用して

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

関連する問題