2010-07-06 4 views
0

Je suis en train d'essayer de mettre en œuvre le CMS beerhouse (ASP.NET 2.0 Programmation de site Web: Problème - Conception - Solution), je suis confronté à un problème dans le deuxième chapitre, tout en mettant en œuvre les thèmes.Sélection de thèmes

Le problème ici est que même si je choisis le blanc comme thème, il reste par défaut, bien que la publication se fasse, elle reste blanche. J'ai également appliqué le point d'arrêt, ici this.Page.Theme est toujours blanc. Est-ce que n'importe qui peut m'aider à trouver où le problème se situe?

Les thèmes sont appelés de la classe d'aide

//This is the helper class 
public static string[] GetThemes() 
     { 
      if (HttpContext.Current.Cache["SiteThemes"] != null) 
      { 
       return (string[])HttpContext.Current.Cache["SiteThemes"]; 
      } 
      else 
      { 
       string themesDirPath = HttpContext.Current.Server.MapPath("~/App_Themes"); 
       // get the array of themes folders under /app_themes 
       string[] themes = Directory.GetDirectories(themesDirPath); 
       for (int i = 0; i <= themes.Length - 1; i++) 
        themes[i] = Path.GetFileName(themes[i]); 
       // cache the array with a dependency to the folder 
       CacheDependency dep = new CacheDependency(themesDirPath); 
       HttpContext.Current.Cache.Insert("SiteThemes", themes, dep); 
       return themes; 
      } 
     } 

Et le dropdownlist est binded à la classe d'aide par le biais d'un contrôle utilisateur

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Globals.ThemesSelectorID.Length == 0) 
      Globals.ThemesSelectorID = ddlThemes.UniqueID; 

     ddlThemes.DataSource = Helpers.GetThemes(); 
     ddlThemes.DataBind(); 

     ddlThemes.SelectedValue = this.Page.Theme; 
    } 

J'ai conçu à des thèmes, l'un est par défaut et la l'autre est blanc, et déclaré dans la section des pages en

web.config. 
    <pages theme="Default" masterPageFile="~/MyCMSMaster.master"> 

Répondre

0

vous avez créé la classe de base personnalisée pour votre page? C'est là que le code vit qui change réellement le thème (this.Theme = this.Request.Form[id];).

Une fois que vous créez la classe de base personnalisée, vous devrez changer le Default.aspx d'utiliser la nouvelle classe BasePage: -

public partial class _Default : MB.TheBeerHouse.UI.BasePage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { } 
} 

Si vous avez besoin vous pouvez télécharger le code source pour vérifier contre le vôtre à partir de http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764584642,descCd-DOWNLOAD.html