首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

sitemap的有关问题

2012-01-01 
sitemap的问题在做一个站后台MasterPage用了Web.sitemap导航可以正常显示代码如下:asp:SiteMapPathID S

sitemap的问题
在做一个站   后台MasterPage用了Web.sitemap导航   可以正常显示
代码如下:
<asp:SiteMapPath   ID= "SiteMapPath1 "   runat= "server "   PathSeparator= "> > ">
                                        <PathSeparatorStyle   Font-Bold= "True "   ForeColor= "#507CD1 "   />
                                        <CurrentNodeStyle   ForeColor= "#333333 "   />
                                        <NodeStyle   Font-Bold= "True "   ForeColor= "#284E98 "   />
                                        <RootNodeStyle   Font-Bold= "True "   ForeColor= "#507CD1 "   />
                                </asp:SiteMapPath>
                                <asp:SiteMapDataSource   ID= "SiteMapDataSource1 "   runat= "server "   StartingNodeUrl= "~/Web.sitemap "   />

然后在前台也用了一个Site.sitemap在前台导航     代码就把   <asp:SiteMapDataSource   ID= "SiteMapDataSource1 "   runat= "server "   StartingNodeUrl= "~/Site.sitemap "   /> 改了下    


请教下高手   为什么前台的导航不显示呢?也不报错

[解决办法]
当用到多个站点地图时,要动态指定,可在MasterPage的PageLoad事件中指定,如下:
this.smpDataSource.Provider = System.Web.SiteMap.Providers[ "ComXmlSiteMapProvider "];

当然,你得在web.config中加入站点地图的相关内容,如:
<siteMap defaultProvider= "PrisonXmlSiteMapProvider " enabled= "true ">
<providers>
<add name= "PrisonXmlSiteMapProvider "
description= "SiteMap provider that reads in .sitemap files. "
type= "System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a "
siteMapFile= "PrisonWeb.sitemap " />
<add name= "ComXmlSiteMapProvider "
description= "SiteMap provider that reads in .sitemap files. "
type= "System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a "
siteMapFile= "ComWeb.sitemap " />
</providers>
</siteMap>

[解决办法]
不知道asp:SiteMapDataSource 怎么用。

记的以前用 <asp:SiteMapPath的时候,sitemap文件只能是Web.sitemap固定名称的。

不知道asp:SiteMapDataSource是不是现在支持多个sitemap文件了,如果是支持多个,就看看Site.sitemap中的格式对不对。
[解决办法]
请注意我上面的回复。
SiteMap默认情况下是一个固定名称的XML文件,
如果你有多个(两个或以上),则需要手动在web.config里做配置,并在适当的地方(想加载站点地图的地方)用this.smpDataSource.Provider = System.Web.SiteMap.Providers[ "ComXmlSiteMapProvider "];这样的语句来指定,这样你就可以有多个,甚至可以为不同权限的用户指定不同的站点导航了。
[解决办法]
我说的也是2.0啊,我上面的例子用到两个站点地图:PrisonWeb.sitemap和ComWeb.sitemap,在web.config里的配置方式上面例子已经贴出来了,你复制过去改一下站点地图文件名为你实际的文件名就行了.


下面是在MasterPage的PageLoad事件中指定用那一个站点地图的例子:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session[ "PrisonCode "].ToString().ToUpper() == "PNOTIN ")
{
//超级用户,显示全部可用菜单项
this.smpDataSource.Provider = System.Web.SiteMap.Providers[ "ComXmlSiteMapProvider "];
}
else
{
//非超级管理,仅显示XX可见的菜单项
this.smpDataSource.Provider = System.Web.SiteMap.Provider;
}
}
}

热点排行