Как работает создание файлов cookie? - PullRequest
1 голос
/ 05 июля 2011

Я работаю над Cookies.Я следовал учебнику http://asp.net -tutorials.com / state / cookies / .Здесь Page_Load проверяет наличие файла cookie BackgroundColor и, если он существует, он извлекает значение и устанавливает цвет фона, в противном случае при событии onselectedindexchanged будет создан новый файл cookie.

Здесь после установки для файла cookie в первый раз красного цвета, япопробуйте снова изменить значение раскрывающегося списка на зеленый, чтобы поток элемента управления сначала достигал Page_Load, и он получал бы значение cookie красного цвета и устанавливал цвет фона на красный, затем элемент управления переходил в ColorSelector_IndexChanged и снова новый файл cookie для зеленогобудет создан с именем BackgroundColor.

Когда я снова изменяю значение выпадающего синего цвета, независимо от времени истечения, вновь созданный Зеленый Cookie должен отображаться правильно?Потому что, когда я меняю раскрывающийся список на Зеленый, создается и сохраняется новый файл cookie, но браузер по-прежнему имеет красный цвет.

Так как же работает создание файлов cookie?Поскольку имя файла cookie одно и то же. Почему Зеленое печенье не заменило Красное печенье здесь?

1 Ответ

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

Глядя на код в образце, он не выглядит так, как будто он может работать, как будто cookie уже существует, он устанавливает значение раскрывающегося списка в цвет, содержащийся в cookie. Затем к тому времени, когда код получает значение «ColorSelector_IndexChanged», значение раскрывающегося списка уже изменено, и поэтому файл cookie просто воссоздается с тем же цветом.

Проверьте наличие PostBack в коде page_load, и он должен работать следующим образом:

    protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (Request.Cookies["BackgroundColor"] != null)
        {
            ColorSelector.SelectedValue = Request.Cookies["BackgroundColor"].Value;
            BodyTag.Style["background-color"] = ColorSelector.SelectedValue;
        }
    }
}

Объяснение

Это потому, что в жизненном цикле страницы asp.net Page_Load будет вызываться до события SelectedIndexChanged, поэтому вы изменяете выбранное значение в раскрывающемся списке, прежде чем записать его в файл cookie.

...