1

ありふれた初心者の質問をすることを許してください、しかし私はクラスのライフサイクルの行き詰まりで立ち往生しているようです。

だから私は私のページを持っています

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

ここで、コンストラクターから実行する、ページの読み込み時にモーダルを取得したいと思います。ページのアンロード時に保存するにはどうすればよいですか?信頼性が低いため、デストラクタは使用できません。

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

ありがとう。

4

1 に答える 1

3

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();
    }

これらのメソッドを使用すると、PostBackから値をロードする前に、ViewStateがPostBackからロードされ、ViewStateが出力にレンダリングされる前に必要な値がViewStateに配置されていることが保証されます。

于 2011-07-28T16:33:35.637 に答える