我正在使用SiteMapPath来显示菜单。
<?xml version="1.0" encoding="utf-8" ?>
<siteMapNode url="default.aspx" title="Home" description="Sitemap example's home page">
<siteMapNode url="products.aspx" title="Products" description="Products listing page">
<siteMapNode url="products/product1.aspx" title="Product 1" description="" />
<siteMapNode url="products/product2.aspx" title="Product 2" description="" />
</siteMapNode>
<siteMapNode url="services.aspx" title="Services" description="Services listing page" >
<siteMapNode url="services/service1.aspx" title="Services 1" description="" />
<siteMapNode url="services/service2.aspx" title="Services 2" description="" />
</siteMapNode>
</siteMapNode>
我想在我的菜单中链接另一个网站,如
<siteMapNode url="http://www.google.com" title="Google" description="" />
但项目未显示。是否可以在站点地图中链接网站?
答案 0 :(得分:2)
我认为该帖子可能包含您问题的解决方案:Referencing external URLs in your web.sitemap in ASP.NET
编辑:由于网站www.sciosoft.com不再响应,这里是从http://web.archive.org/web/20170821015820/http://www.sciosoft.com:80/blogs/post/2010/02/23/Referencing-external-URLs-in-your-websitemap-in-ASPNET.aspx复制的博客文本(由James Fielding编写)。
在ASP.NET中,我们经常使用站点地图来设置导航,尤其是菜单。默认情况下,ASP.NET站点地图提供程序使用“Web.sitemap”文件。以下是一个简单站点的此文件示例:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode title="Home" description="Home" url="~/default.aspx">
<siteMapNode title="Services" description="Services we offer" url="~/Services.aspx">
<siteMapNode title="Consulting" description="Consulting services" url="~/Consulting.aspx" />
<siteMapNode title="Support" description="Supports plans" url="~/Support.aspx" />
</siteMapNode>
<siteMapNode title="About Us" description="About Us" url="~/AboutUs.aspx">
<siteMapNode title="Company" description="Our people and offices" url="~/Company.aspx" />
<siteMapNode title="Blogs" description="Blogs from us to you"
url="http://blogs.mysite.com/default.aspx" />
</siteMapNode>
</siteMapNode>
</siteMap>
所以我们的基本菜单将如下所示:
主页 服务 咨询 支持 关于我们 公司 博客
请注意,“关于我们”部分中的“博客”节点引用了外部URL。在您开始向站点添加基于角色的安全性之前,这不是问题。具体来说,一旦在Web.config或Web.sitemap文件中设置了securityTrimmingEnabled =“true”,“博客”节点就会消失,而你却一直在挠头。
主页 服务 咨询 支持 关于我们 公司
此时,你会发现一些开发人员摆脱了web.sitemap,并开始硬编码菜单项。但是,这种行为有一个非常简单的方法。只需允许每个人访问“博客”节点,以便不进行修剪:
<siteMapNode title="Blogs" description="Blogs from us to you"
url="http://blogs.mysite.com/default.aspx" roles="*">
通过添加roles =“*”,我们回到了我们的博客。这太容易了。
为了完整起见,我要提一下,我们也可以通过在Blogs节点中添加securityTrimmingEnabled =“false”来禁用Web.sitemap文件中的安全修整。虽然我不是这种方法的忠实粉丝,但我发现它使得Web.sitemap不太清楚我们想要实现的目标,这对于在网站上工作的下一个人来说永远不会有好处,但选择权在于你的