ASP.Net - 链接SiteMapPath中的网站

问题描述 投票:2回答:1

我正在使用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="" />  

但是项目没有显示。是否可以在站点地图中链接网站?

c# asp.net visual-studio web.sitemap
1个回答
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”,“Blogs”节点就会消失,而你却一直在挠头。

主页服务咨询支持关于我们公司

此时,你会发现一些开发人员摆脱了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不太清楚我们想要实现的目标,这对于在网站上工作的下一个人来说永远不会有好处,但选择权在于你的。

© www.soinside.com 2019 - 2024. All rights reserved.