ASP.NET网站应用错误的主题

时间:2016-04-19 16:34:20

标签: asp.net themes

我正在设置我的ASP.NET站点以使用下拉列表动态切换主题。主题随着每个新选择而变化,但主题与正确的选择不匹配。在我的App_Themes文件中,主题文件夹列为:"蓝色","灰色"和"绿色"。对于每一个新的选择,新的应用主题只是按顺序循环,无论我做出哪个选择。

示例:我第一次选择新主题时,它将是蓝色。第二次是灰色的。第三个是绿色等等。

我做错了什么?

Default.aspx的

<asp:DropDownList ID="ThemeList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ThemeList_SelectedIndexChanged">
    <asp:ListItem Value="Blue">Blue Theme</asp:ListItem>
    <asp:ListItem Value="Green">Green Theme</asp:ListItem>
    <asp:ListItem Value="Gray">Gray Theme</asp:ListItem>
</asp:DropDownList>

Default.aspx.cs

protected void ThemeList_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["theme"] = ThemeList.SelectedItem.Value;
}

protected void Page_PreInit(object sender, EventArgs e)
{
    if(Session["theme"] == null)
    {
        Page.Theme = "Blue";
    }

    else
    { 
        String chosenTheme = Session["theme"].ToString();

        switch (chosenTheme)
        {
            case "Blue":
                Page.Theme = "Blue";
                break;
            case "Green":
                Page.Theme = "Green";
                break;
            case "Gray":
                Page.Theme = "Gray";
                break;
            case "default":
                Page.Theme = "Blue";
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

以下是您要实现的good example

这个answer可以让您了解动态控件(在您的情况下为下拉列表)生成的回发如何被后面的代码处理。

这个page提供了几种如何编程主题并动态更改主题的方法。