Как работает создание файлов cookie?

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

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

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

Так как же работает создание файлов cookie? Поскольку имя файла cookie совпадает, почему Green Cookie здесь не заменил Red cookie?

1 ответ

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

Другие вопросы по тегам