Hi Imar,
I am working with chap 6. I have checked my code and it looks fine, but maybe i'm missing something. When i change the theme using the dropdown list, i can see the postback take place, but the theme does''t change. From what I can gather, it looks like the cookies are working, but I do have other cookies in my Temp Internet files, but not PerferredTheme...
Thanks for any help.
Code:
Web config:
Code:
<?xmlversion="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilationdebug="true"targetFramework="4.0"/>
<pagestheme="Monochrome"></pages>
</system.web>
</configuration>
FronEnd.Master
Code:
<%@MasterLanguage="C#"AutoEventWireup="true"CodeFile="FrontEnd.master.cs"Inherits="MasterPages_FrontEnd" %>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
<asp:ContentPlaceHolderid="head"runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<formid="form1"runat="server">
<divid="PageWrapper">
<divid="Header"><ahref="-/"runat="server"></a></div>
<divid="MenuWrapper">Menu</div>
<divid="MainContent">
<asp:ContentPlaceHolderID="cpMain"runat="server">
</asp:ContentPlaceHolder>
</div>
<divid="Sidebar">
<asp:DropDownListID="theme"runat="server"AutoPostBack="True"onselectedindexchanged="theme_SelectedIndexChanged">
<asp:ListItemValue="DarkGrey"></asp:ListItem>
<asp:ListItemValue="Monochrome"></asp:ListItem>
</asp:DropDownList>
</div>
<divid="Footer">Footer goes here</div>
</div>
</form>
</body>
</html>
FrontEnd.cs
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
publicpartialclassMasterPages_FrontEnd : System.Web.UI.MasterPage
{
protectedvoid Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string selectedTheme = Page.Theme;
HttpCookie preferredTheme = Request.Cookies.Get("PreferredTheme");
if (preferredTheme != null)
{
selectedTheme = preferredTheme.Value;
}
if (!string.IsNullOrEmpty(selectedTheme) && theme.Items.FindByValue(selectedTheme) != null)
{
theme.Items.FindByValue(selectedTheme).Selected = true;
}
}
}
protectedvoid theme_SelectedIndexChanged(object sender, EventArgs e)
{
HttpCookie preferredTheme = newHttpCookie("PreferredTheme");
preferredTheme.Expires = DateTime.Now.AddMonths(3);
preferredTheme.Value = theme.SelectedValue;
Response.Cookies.Add(preferredTheme);
Response.Redirect(Request.Url.ToString());
}
}