我目前正在一个使用菜单web控件的网站中添加功能。
在网站中有不同的角色,需要不同的导航选项集根据角色出现,为了完成这项任务,我在母版页后面的代码中添加了一个函数,该函数是从Page_Load调用的,它以文件名(sitemap)作为参数,并将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>
谢谢,
里克。
该代码只在没有回发时执行。
If (!IsPostBack)
{
//Your code here!
}