0
私は、テーマをドロップダウンリストで動的に切り替えるためにASP.NETサイトを設定しています。テーマは新しい選択ごとに変化しますが、テーマは正しい選択と一致しません。私のApp_Themesファイルでは、テーマフォルダは "青"、 "灰色"、 "緑"の順に表示されます。新しい選択が行われるたびに、新しい適用テーマが、選択したものに関係なく、その順番に循環します。ASP.NETサイトが間違ったテーマを適用しています
例:初めて新しいテーマを選択すると、青色になります。 2回目は灰色になります。 3番目は緑色で、それ以降も同様です。
私は間違っていますか?
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;
}
}
}
答えはありませんが、if-else-switchコードの代わりに、Page_PreInitメソッドのコード行を1行に減らすことができます: 'Page.Theme = Session [" theme "]。ToString( )?? "ブルー"; ' –