2011-09-15 46 views
0

我目前在使用Menu web控件的網站中添加功能。ASP.NET菜單緩存?

在網站內部有不同的角色需要根據角色出現不同的導航選項集,爲了完成這個任務,我在Page_Load中調用了母版頁後面的代碼中添加了一個函數,將文件名(站點地圖)作爲參數,並將html中的菜單綁定到此源。

我的問題是,當我導航到一個不存在的頁面,然後返回菜單不再出現。

有人可以給我任何關於這個問題的信息,比如爲什麼會發生這種情況並解決它,這個問題似乎也只發生在IE9以外的Firefox,Opera和Chrome上。

我的當前代碼如下。

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); 

這是我的代碼,目前不包括CSS相關的信息,我目前有在使用的SiteMapDataSource相對於的XmlDataSource,因爲我相信我可能可以使用以下信息從我的Web配置文件來一展身手選擇數據源。

<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> 

感謝,

裏克。

+0

發佈菜單標記和MasterPage邏輯。 – Icarus

+0

嗨lcarus,代碼已被添加到問題上。 – RJF

回答

0

該代碼只應在沒有回傳時執行。

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

否則,您的元素將被刪除。