1

我一直在学习一点 asp.net 并且我一直对整个动态主题更改遇到问题,我一直在关注一本教如何通过下拉菜单进行操作的书,但我想挑战自己并用按钮来做。

我的网站有 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 上存储了一个值,我在网站上创建了一个 Label 并将它的 .Text 属性赋予 cookie .Value,什么也没发生。所以我开始删除代码以查看是什么停止了事件,我发现这一行......

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

……对此负责。只是为了它,我删除了那一行并再次测试了我的网站,但主题仍然没有变化。

任何帮助,将不胜感激。

4

3 回答 3

0

固定的。我忘记进行更改,以便我在继承 BasePage 中测试的页面......它继承了默认页面。

于 2012-06-06T15:42:27.307 回答
0

检查以下链接

http://www.codeproject.com/Articles/18300/How-to-change-page-theme-in-asp-net-2-0-dynamicall

于 2012-06-06T12:26:37.250 回答
0

一切正常..
您的主题可能存在问题。在页面级别检查它们(如 Duane 所说!!)。尝试这个..

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

于 2012-06-06T13:12:07.103 回答