我添加了一个Web.sitemap并将siteMapNode添加到其中。此外,我已将asp:SiteMapPath
控件放在网页上,但在运行时不会显示任何内容。
这是我的SiteMapPath控件的代码:
<asp:SiteMapPath ID="SiteMapPath1" runat="server" Font-Names="Verdana" Font-Size="0.8em">
<CurrentNodeStyle ForeColor="#333333" />
<NodeStyle Font-Bold="True" ForeColor="#666666" />
<PathSeparatorStyle Font-Bold="True" ForeColor="#1C5E55" />
<RootNodeStyle Font-Bold="True" ForeColor="#1C5E55" />
</asp:SiteMapPath>
SiteMapPath不会自动控制拾取Web.sitemap吗?还是别的什么呢?如果要检查Web.sitemap,here it is。
答案 0 :(得分:4)
我也遇到过这个问题。写一个非常简单的网站。
问题是不在Web.sitemap中的页面不包含在面包屑中。请参阅http://msdn.microsoft.com/en-us/library/ms178418(v=vs.100).aspx的第一个注释。 我在Web.sitemap中列出了所有页面,但扩展名为.aspx。例如:
<siteMapNode url="~/Contact.aspx" title="Contact" description="Contact information" />
当我在浏览器中访问该页面时,该网址已“清除”到http://localhost/Contact
。
意思是,没有.aspx扩展名。我不知道哪个模块对此负责。当我通过删除.aspx更改Web.sitemap中的条目时,面包屑显示在页面上。因此,该行看起来像:
<siteMapNode url="~/Contact" title="Contact" description="Contact information" />
编辑:负责URL重写的包是FriendlyUrls包(http://www.nuget.org/packages/Microsoft.AspNet.FriendlyUrls)
答案 1 :(得分:3)
您是否已将XML SiteMap提供程序配置到Web.config中?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="Web.sitemap" />
</providers>
</siteMap>
</system.web>
</configuration>
同时设置控件:
<asp:SiteMapPath runat="server" RenderCurrentNodeAsLink="true" SkipLinkText="">
...
</asp:SiteMapPath>