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

现在我只想在页面加载时获取 Modal,这是我从构造函数中完成的。如何在页面卸载时保存它?我不能使用析构函数,因为它不可靠。

这种情况的最佳解决方案是什么?

谢谢。

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 加载值之前已从 PostBack 加载 ViewState,并且在将 ViewState 呈现到输出之前已将必要的值放入 ViewState。

于 2011-07-28T16:33:35.637 回答