ASP.NET меню кэширования? - PullRequest
       23

ASP.NET меню кэширования?

0 голосов
/ 15 сентября 2011

В настоящее время я добавляю функции на веб-сайт, который использует веб-элемент управления Menu.

На веб-сайте существуют разные роли, для которых требуется различный набор параметров навигации в зависимости от этой роли. Для выполнения этой задачи я добавил функцию в код позади главной страницы, которая вызывается из Page_Load, которая принимает имя файла (карта сайта) в качестве параметра и связывает меню, содержащееся в html, с этим источником.

Моя проблема в том, что когда я перехожу на страницу, которая не существует, а затем возвращаюсь, меню больше не появляется.

Может ли кто-нибудь дать мне какую-либо информацию по этой проблеме, например, почему она происходит и как ее решить, также эта проблема, по-видимому, возникает только в Internet Explorer 9 из 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, так как я полагаю, что могу выбрать следующую информацию из моего файла веб-конфигурации для выбора источника данных .

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

Спасибо

Ric.

1 Ответ

0 голосов
/ 27 октября 2012

Код должен выполняться только при отсутствии обратной передачи.

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

В противном случае ваши элементы будут удалены.

...