سؤال

I've been learning a bit of asp.net and I've been having issues with the whole dynamic theme change, I've been following a book that teaches how to do it via a drop down menu, but I wanted to challenge myself and do it with buttons.

My website has 2 themes and therefore, two buttons that represent each theme (orangefresh and greenfresh), this is my master page code behind:

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class mpage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string selectedTheme = Page.Theme;
            HttpCookie webtheme = Request.Cookies.Get("webtheme");
            if (webtheme != null)
            {
                selectedTheme = webtheme.Value;
            }

        }
    }
    protected void orangefresh_Click(object sender, EventArgs e)
    {
        HttpCookie webtheme = new HttpCookie("webtheme");
        webtheme.Expires = DateTime.Now.AddMonths(3);
        webtheme.Value = "orangefresh";
        Response.Cookies.Add(webtheme);
        Response.Redirect(Request.Url.ToString());
    }

    protected void greenfresh_Click(object sender, EventArgs e)
    {
        HttpCookie webtheme = new HttpCookie("webtheme");
        webtheme.Expires = DateTime.Now.AddMonths(3);
        webtheme.Value = "greenfresh";
        Response.Cookies.Add(webtheme);
        Response.Redirect(Request.Url.ToString());
    }
}

And this is my Base Page:

using System;
using System.Web;
public class BasePage : System.Web.UI.Page
{
private void Page_PreInit(object sender, EventArgs e)
{
HttpCookie webtheme = Request.Cookies.Get("webtheme");
if (webtheme != null)
{
    Page.Theme = webtheme.Value;
}
}
public BasePage()
{
    this.PreInit += new EventHandler(Page_PreInit);
}
}

Seeing as I have no experience with cookies, I decided to look at the code from the beginning, I tested out if the Click event was storing a value on the cookie, I created a Label on the website and gave it's .Text property the cookie's .Value, nothing happened. So I started to remove code to see what was stopping the event, and I found that this line...

 Response.Redirect(Request.Url.ToString());

... was responsible for it. Just for the sake of it, I removed that one line and tested my website again, still, no changes in the theme.

Any help would be appreciated.

هل كانت مفيدة؟

المحلول 2

Fixed. I forgot to make the change so that the page I was testing in inherited BasePage... it was inheriting the default page.

نصائح أخرى

Everything Works fine ..
problem may exist on your themes.Check them at page level(as Duane said!!). try this..

<%@ Page Title="" Language="C#" MasterPageFile="~/mpage.master" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" Theme="orangefresh"%>

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top