Как сохранить класс на PostBack в проекте веб-форм ASP.NET 3.5? - PullRequest
1 голос
/ 15 апреля 2010

Как мне сохранить класс ASP.Net на PostBack? Я уже нашел время, чтобы перейти к базе данных и заполнить свой объект значениями при начальной загрузке страницы, так как я могу элегантно сохранить этот объект в PostBack? Страница, содержащая пользовательский объект, отправляется обратно на себя.

Для чего я использую C # в приложении ASP.NET 3.5 Web Forms.

Ответы [ 3 ]

2 голосов
/ 15 апреля 2010

Возможно, есть лучший способ сделать это с 3.5, но в 2.0 вы можете использовать viewstate. Просто добавьте объект в viewstate, и он автоматически включится в форму asp.net по умолчанию как скрытое поле. Затем на обратной передаче вы можете извлечь ее из состояния просмотра.

Будьте осторожны с этим, ваше состояние просмотра включено в каждая загрузка страницы . В конечном счете, я бы порекомендовал просто снова извлечь объект из базы данных и избегать состояния просмотра. Вы также можете попробовать что-то вроде memcached для кэширования объекта на стороне сервера.

    protected void Page_Load(object sender, EventArgs e)
    {
        if(ViewState["NameOfUser"] != null)
            NameLabel.Text = ViewState["NameOfUser"].ToString();
        else
            NameLabel.Text = "Not set yet...";
    }

    protected void SubmitForm_Click(object sender, EventArgs e)
    {
        ViewState["NameOfUser"] = NameField.Text;
        NameLabel.Text = NameField.Text;
    }

Пример из http://asp.net -tutorials.com / state / viewstate /

0 голосов
/ 22 апреля 2010

Если объект маленький, вы можете сохранить его в скрытом поле (ах) .Таким образом, вам не нужно занимать память сервера, но вы также избегаете повторного попадания в базу данных.

0 голосов
/ 15 апреля 2010

Вы можете использовать переменную сеанса или кэширование на сервере. Единственным ограничением для viewstate является то, что объект должен быть сериализован для его хранения, но кэширование сеанса и сервера может хранить любой объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...