【问题标题】:ASP.NET Menu Caching?ASP.NET 菜单缓存?
【发布时间】:2011-09-15 13:59:29
【问题描述】:

我目前正在使用 Menu Web 控件的网站中添加功能。

在网站内,有不同的角色需要根据该角色出现一组不同的导航选项,为了完成这项任务,我在母版页后面的代码中添加了一个函数,该函数从 Page_Load 调用文件名(站点地图)作为参数,并将 html 中的菜单绑定到此源。

我的问题是当我导航到一个不存在的页面然后返回时菜单不再出现。

谁能给我关于这个问题的任何信息,例如它发生的原因和解决方法,而且这个问题似乎只发生在 Firefox、Opera 和 Chrome 的 Internet Explorer 9 中。

我当前的代码如下。

    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>

谢谢,

瑞克。

【问题讨论】:

  • 发布菜单标记和 MasterPage 逻辑。
  • 嗨 lcarus,代码已添加到问题中。

标签: asp.net aspmenu aspmenu-control


【解决方案1】:

代码应该只在没有回发时执行。

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

否则,您的元素将被删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2011-06-28
    • 2010-09-05
    • 2011-09-09
    相关资源
    最近更新 更多