[英]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.