1

ドロップダウンリストの値を選択してからテーマを変更したい。緑と赤の 2 つのテーマ

私のコードでは、ドロップダウンリストで値を選択しようとすると、最初の値にリダイレクトされます

例: 最初に既に選択されている値は緑で、次に赤の値を選択すると、ドロップダウンリストで緑に表示されます

次のコード:

protected void Page_PreInit(object sender, EventArgs e)
{
    if (!IsPostBack)
    {

        if (Session["theme"] != null)
        {
            Page.Theme = Session["theme"].ToString();
        }
        Page.Theme = "Green";
    }


}
protected void ddltheme_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["theme"] = ddltheme.SelectedValue;
    Response.Redirect(Request.FilePath);
}  
4

2 に答える 2

0

あなたはで試すことができます

Session.Add("theme", ddltheme.SelectedValue);

また、デリゲートに add を追加します。これは、データを投稿するときに (! IsPostBack) を渡さないため、参照しないためです。

Page.Theme = ddltheme.SelectedValue;

protected void ddltheme_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["theme"] = ddltheme.SelectedValue;
    Page.Theme = ddltheme.SelectedValue;
    Response.Redirect(Request.FilePath);
}
于 2012-09-05T13:12:53.123 に答える
0

セッション値を上書きしているだけなので、次のことを行っても実際には何も達成されません。

if (Session["theme"] != null)
{
    Page.Theme = Session["theme"].ToString();
}
Page.Theme = "Green";

どちらかといえば、デフォルトにしようとしているので、次のように入れます:

Page.Theme = "Green";
if (Session["theme"] != null)
{
    Page.Theme = Session["theme"].ToString();
}

また、私は Response.Redirect(Request.FilePath); をよく理解していません。一部...これで何を達成しようとしていますか? ポストバックを実行しないでコードを実行しようとしていますか? より良い方法は、Candie が説明したように ddl のイベントに Page.Theme を設定し、Response.Redirect を実行しないことです。

于 2012-09-05T15:12:29.160 に答える