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