Creare una pagina di base che si ereditano tutte le pagine da e impostare il tema in caso OnPreInit:
public class ThemePage : System.Web.UI.Page
{
protected override void OnPreInit(EventArgs e)
{
SetTheme();
base.OnPreInit(e);
}
private void SetTheme()
{
this.Theme = ThemeSwitcher.GetCurrentTheme();
}
}
Di seguito si riporta la classe di utilità ThemeSwitcher che gestisce ricevendo/salvare il tema corrente e messa in vendita di temi . Dal momento che hai detto che non stai usando un database puoi usare Session:
public class ThemeSwitcher
{
private const string ThemeSessionKey = "theme";
public static string GetCurrentTheme()
{
var theme = HttpContext.Current.Session[ThemeSessionKey]
as string;
return theme ?? "Default";
}
public static void SaveCurrentTheme(string theme)
{
HttpContext.Current.Session[ThemeSessionKey]
= theme;
}
public static string[] ListThemes()
{
return (from d in Directory.GetDirectories(HttpContext.Current.Server.MapPath("~/app_themes"))
select Path.GetFileName(d)).ToArray();
}
}
Vuoi una pagina in cui puoi cambiare il tema. Aggiungere una DropDownList con il seguente codice dietro:
public partial class _Default : ThemePage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindData();
}
}
private void BindData()
{
var currentTheme = ThemeSwitcher.GetCurrentTheme();
foreach (var theme in ThemeSwitcher.ListThemes())
{
var item = new ListItem(theme);
item.Selected = theme == currentTheme;
ddlThemes.Items.Add(item);
}
}
protected void ddlThemes_SelectedIndexChanged(object sender, EventArgs e)
{
ThemeSwitcher.SaveCurrentTheme(ddlThemes.SelectedItem.Value);
Response.Redirect("~/default.aspx");
}
}
È possibile scaricare l'applicazione di esempio here.
fonte
2012-01-26 15:50:31
Temi, pagine master, pagine di contenuto e web.config sono asp.net e non asp classici. Modificato i tuoi tag. –
grazie, me ne sono dimenticato :) –
Ci sono molti esempi sul web, eccone uno: http://www.asp.net/web-forms/videos/how-do-i/how-do- i-create-user-selectable-themes-for-a-web-site Ti consiglio di cercare e cercare, Microsoft ha pubblicato un bel po 'di – John