1

私は少しasp.netを学び、動的なテーマの変更全体に問題がありました。ドロップダウンメニューを使用してそれを行う方法を教えている本をフォローしていますが、自分自身に挑戦したかったのです。ボタンでそれを行います。

私のウェブサイトには2つのテーマがあるため、各テーマ(orangefreshとgreenfresh)を表す2つのボタンがあります。これは、私のマスターページコードの背後にあります。

    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に値を格納しているかどうかをテストし、Webサイトでラベルを作成して、Cookieの.Textプロパティを指定しました。 .Value、何も起こりませんでした。そこで、イベントを停止している原因を確認するためにコードを削除し始めましたが、この行は...

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

...それを担当しました。そのために、その1行を削除して、Webサイトを再度テストしましたが、テーマに変更はありません。

どんな助けでもいただければ幸いです。

4

3 に答える 3

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 に答える
0

修理済み。継承されたBasePageでテストしていたページがデフォルトのページを継承するように変更するのを忘れました。

于 2012-06-06T15:42:27.307 に答える