2011-09-15 5 views
0

J'ajoute actuellement des fonctionnalités dans un site Web qui utilise le contrôle Web Menu.Menu ASP.NET Mise en cache?

Dans le site Web, différents rôles nécessitent l'affichage d'un ensemble différent d'options de navigation en fonction de ce rôle. Pour compléter cette tâche, j'ai ajouté une fonction au code derrière la page maître appelée à partir du Page_Load prend un nom de fichier (sitemap) en tant que paramètre et lie le menu qui se trouve dans le code html à cette source.

Mon problème est que lorsque je navigue vers une page qui n'existe pas et puis revenir en arrière le menu n'apparaît plus.

Quelqu'un peut-il me donner des informations sur ce problème, comme pourquoi il se passe et une résolution, aussi ce problème semble se produire dans Internet Explorer 9 sur Firefox, Opera et Chrome.

Mon code actuel est le suivant.

Menu menu = new Menu(); 
    menu.Orientation = Orientation.Horizontal; 
    menu.StaticDisplayLevels = 2; 
    menu.MaximumDynamicDisplayLevels = 3; 
    menu.CssClass = "menu"; 
    menu.EnableViewState = false; 

    //configure xmldatasource 
    XmlDataSource xmlDS = GetSiteMapDataSource(navigationPath); 
    xmlDS.XPath = "/*/*"; 
    xmlDS.EnableCaching = false; 

    //configure menuitembinding 
    MenuItemBinding mib = new MenuItemBinding(); 
    mib.DataMember = "siteMapNode"; 
    mib.TextField = "title"; 
    mib.NavigateUrlField = "url"; 
    mib.ValueField = "title"; 

    //configure datasource 
    menu.DataSource = xmlDS; 
    menu.DataBindings.Add(mib); 
    menu.DataBind(); 

    //add to panel 
    NavigationPanel.Controls.Add(menu); 

C'est mon code comme ne comprenant pas les informations relatives css actuel, j'ai actuellement aller à l'aide SiteMapDataSource par opposition à XmlDataSource que je crois que je peux être en mesure d'utiliser les informations suivantes de mon fichier de configuration Web pour sélectionnez la source de données.

<siteMap defaultProvider="guest"> 
     <providers> 
      <add name="guest" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Guest.sitemap"/> 
      <add name="professional" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Professional.sitemap"/> 
      <add name="supplier" type="System.Web.XmlSiteMapProvider" siteMapFile="~/App_Data/Supplier.sitemap"/> 
     </providers> 
    </siteMap> 

Merci,

Ric.

+0

Afficher le balisage de menu et la logique MasterPage. – Icarus

+0

Salut lcarus, le code a été ajouté à la question. – RJF

Répondre

0

Le code ne doit être exécuté que s'il n'y a pas de publication.

If (!IsPostBack) 
{ 
    //Your code here! 
} 

Sinon, vos éléments seront supprimés.