繁体   English   中英

ASP.NET网站地图

[英]ASP.NET SiteMap

我正在开发一个网站,并在那里使用web.sitemap展示面包屑。

我面临的问题基本上是我有一些硬页和软页,当我单击硬页时,现在仅在数据库中提到这些硬页和软页,它显示出完整的面包屑,也包括包含它的主页,但是当我喜欢该链接时,在数据库中,我必须在一个特定页面上显示它用于每个页面数据而不包括主页面。例如

这是硬页

home > main menu > hard page

但是当我单击数据库中的软页时

home > soft page

我想使用C#动态设置它,是否有人知道如何解决?

如何使用自定义逻辑推出自己的XmlSiteMapProvider的示例:

    public class MyXmlSiteMapProvider : XmlSiteMapProvider
    {
        public override SiteMapNode FindSiteMapNode(string rawUrl)
        {
            SiteMapNode node = base.FindSiteMapNode(rawUrl);
            if (node != null)
            {
                var page = HttpContext.Current.Handler as Page;
                if (page != null)
                {
                    page.Title = node.Title;
                }
                var newNode = node.Clone(true);
                newNode.Url = rawUrl;
                return newNode;
            }
            else
            {
                return null;
            }
        }

        public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
        {
            if (node.Roles.OfType<string>().Any(r => String.Equals(r, "*", StringComparison.Ordinal) || context.User.IsInRole(r)))
            {
                return true;
            }
            else
            {
                throw new InsufficientRightsException();
            }
        }
    }

安装到Web.config中:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">
            <providers>
                <clear />
                <add name="MyXmlSiteMapProvider" type="MyXmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true" />
            </providers>
        </siteMap>
    </system.web>
</configuration>

使用标准的ASP.NET面包屑控件:

<asp:SiteMapPath runat="server" RenderCurrentNodeAsLink="true" SkipLinkText="" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM