2012-06-06 63 views
1

我一直在學習一點asp.net,我一直在關注整個動態主題變化的問題,我一直在關注一本書,教會如何通過一個drop下拉菜單,但我想挑戰自己,並用按鈕做。通過按鈕動態更改網站主題

我的網站有2個主題,並表示每個主題,因此,兩個按鈕(orangefresh和greenfresh),這是我的母版頁後面的代碼:

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

這是我的基本頁:

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

鑑於我沒有使用Cookie的經驗,我決定從一開始就查看代碼,我測試了Click事件是否在Cookie上存儲值,我在網站上創建了一個標籤並給出了.Text屬性cookie的.Value,什麼都沒有發生。於是我開始刪除代碼,看看什麼是停止的事件,我發現這條線......

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

...是負責。爲了這個原因,我刪除了這一行,並再次測試了我的網站,但仍然沒有改變主題。

任何幫助,將不勝感激。

+0

您是否在web.config中設置了主題? – dtsg

+0

我在web.config文件中放置了,因爲這是默認主題,還有什麼我應該做的? –

+0

你能發佈masterpage的標記嗎? – dtsg

回答

0

固定。我忘了進行更改,以便我在繼承的BasePage中進行測試的頁面......它正在繼承默認頁面。

0

一切正常..
問題可能對你themes.Check他們在頁面級存在(如杜安說!)。 試試這個..

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

+0

我已經嘗試了這兩個主題,他們工作得很好...... Theme =「orangefresh」和Theme =「greenfresh」 –