私は少し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サイトを再度テストしましたが、テーマに変更はありません。
どんな助けでもいただければ幸いです。