1

我想选择下拉列表值然后更改主题。两个主题绿色和红色

在我的代码中,我尝试在下拉列表中选择值,然后重定向到第一个值

例如..第一个已经选择的值是绿色下一个选择红色值然后它在下拉列表中显示绿色

以下代码:

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

执行以下操作并没有真正完成任何事情,因为您只是覆盖了会话值:

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 回答
0

你可以试试

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

并且在您的委托中添加,因为当您发布数据时,您不会经过您的 (!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 回答