SiteMapPath没有出现

时间:2011-01-17 13:56:49

标签: .net asp.net sitemap

我添加了一个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

2 个答案:

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