如何使用下拉列表选择值来应用主题?

时间:2012-09-05 13:10:10

标签: asp.net themes

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

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

实施例..     首先已经选择的值是绿色     接下来选择红色值,然后在下拉列表中显示为绿色

以下代码:

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);
}  

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);部分...你想用这个完成什么?您是否尝试通过不执行回发来运行代码?更好的方法是简单地在你的ddl事件中设置你的Page.Theme,因为Candie已经解释过,而不是做一个Response.Redirect。