我一直在学习一点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());
...是负责。为了这个原因,我删除了这一行,并再次测试了我的网站,但仍然没有改变主题。
任何帮助,将不胜感激。
您是否在web.config中设置了主题? – dtsg
我在web.config文件中放置了 ,因为这是默认主题,还有什么我应该做的? –
你能发布masterpage的标记吗? – dtsg