簡體   English   中英

如何使用下拉列表將網站主題設置為所有網頁?

[英]How to set website theme to all webpages using a drop down list?

我正在嘗試使用主頁上的下拉列表來選擇和設置所有網頁的主題。 它為主頁設置它,但是當我轉到其他任何頁面時,它都沒有主題。 這是我的主頁代碼:

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

我認為我擁有的代碼僅足以將主題應用於一頁,那么如何將其應用於所有頁面?

默認情況下,您的HttpCookie的范圍是您所在的頁面。

如果要使其成為整個域,則需要將“路徑”設置為整個站點,可能是這樣的:

userSelectedTheme.Path = "/";

更多信息:

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

我要做的就是將preinit代碼放在其他頁面的代碼文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM