2012-06-06 31 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” –