Загрузить viewstate при загрузке страницы, сохранить при выгрузке страницы (из базового класса) - c # Asp.net - PullRequest
1 голос
/ 28 июля 2011

Прошу прощения за то, что я задал мирский вопрос новичка, но я, кажется, застрял в подвешенном состоянии жизненного цикла класса.

Итак, у меня есть моя страница

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

Теперь я просто хочу получить модальную загрузку страницы, которую я делаю из конструктора. Как я могу сохранить его на странице разгрузки? Я не могу использовать деструктор, так как он ненадежен.

Как лучше всего решить этот сценарий?

Спасибо.

1 Ответ

2 голосов
/ 28 июля 2011

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 был загружен из PostBack до того, как вы попытаетесь загрузить из него значение, и что вы поместили необходимые значения в ViewState до того, как ViewState будет отображен на выходе.

...