如何使用下拉列表将网站主题设置为所有网页?

时间:2013-12-03 03:40:40

标签: c# themes

我正在尝试使用主页上的下拉列表来选择和设置所有网页的主题。它为主页设置它,但是当我去任何其他页面时它没有主题。这是我的主页代码:

        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;
        }
    }

我认为我所拥有的代码仅足以将主题应用于一个页面,那么如何将其应用于所有页面呢?

2 个答案:

答案 0 :(得分:0)

默认情况下,您的HttpCookie范围是您所在的页面。

如果您希望它是整个域,您需要将Path设置为整个站点,可能是这样的:

userSelectedTheme.Path = "/";

更多信息:

http://msdn.microsoft.com/en-us/library/system.web.httpcookie.path(v=vs.110).aspx

答案 1 :(得分:0)

我所要做的就是将preinit代码放在其他页面的代码文件中。