我正在尝试使用主页上的下拉列表来选择和设置所有网页的主题。它为主页设置它,但是当我去任何其他页面时它没有主题。这是我的主页代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string selectedTheme = Page.Theme;
HttpCookie userSelectedTheme =
Request.Cookies.Get("UserSelectedTheme");
if (userSelectedTheme != null)
{
selectedTheme = userSelectedTheme.Value;
}
if (!string.IsNullOrEmpty(selectedTheme) &&
ddlSetTheme.Items.FindByValue(selectedTheme) != null)
{
ddlSetTheme.Items.FindByValue(selectedTheme).Selected =
true;
}
}
}
protected void ddlSetTheme_SelectedIndexChanged(object sender, EventArgs e)
{
HttpCookie userSelectedTheme = new
HttpCookie("UserSelectedTheme");
userSelectedTheme.Expires = DateTime.Now.AddMonths(6);
userSelectedTheme.Value = ddlSetTheme.SelectedValue;
Response.Cookies.Add(userSelectedTheme);
Response.Redirect(Request.Url.ToString());
}
private void Page_PreInit(object sender, EventArgs e)
{
HttpCookie setTheme = Request.Cookies.Get("UserSelectedTheme");
if (setTheme != null)
{
Page.Theme = setTheme.Value;
}
}
我认为我所拥有的代码仅足以将主题应用于一个页面,那么如何将其应用于所有页面呢?
答案 0 :(得分:0)
默认情况下,您的HttpCookie范围是您所在的页面。
如果您希望它是整个域,您需要将Path设置为整个站点,可能是这样的:
userSelectedTheme.Path = "/";
更多信息:
http://msdn.microsoft.com/en-us/library/system.web.httpcookie.path(v=vs.110).aspx
答案 1 :(得分:0)
我所要做的就是将preinit代码放在其他页面的代码文件中。