ASP.NET:自定义动态填充的站点地图(SiteMapProvider)

ASP.NET:自定义动态填充的站点地图(SiteMapProvider),asp.net,sitemapprovider,Asp.net,Sitemapprovider,我正在尝试编写自己的第一个SiteMapProvider子类。它意味着使用一系列不同的数据库查找动态填充,就像我在web上找到的所有示例一样 然而,有一大堆事情我都不清楚。以下是我的前两个问题: 为什么几乎每个人的项目中都使用了StaticSiteMapProvider,而不是SiteMapProvider?由于类包含名称“static”,我得到的印象是,它并不像我想要的那样……那么,动态 是否有人能为我提供一个超级简约的SiteMapProvider子类,它只使用静态数据填充地图,即不访问数

我正在尝试编写自己的第一个
SiteMapProvider
子类。它意味着使用一系列不同的数据库查找动态填充,就像我在web上找到的所有示例一样

然而,有一大堆事情我都不清楚。以下是我的前两个问题:

  • 为什么几乎每个人的项目中都使用了
    StaticSiteMapProvider
    ,而不是
    SiteMapProvider
    ?由于类包含名称“static”,我得到的印象是,它并不像我想要的那样……那么,动态
  • 是否有人能为我提供一个超级简约的
    SiteMapProvider
    子类,它只使用静态数据填充地图,即不访问数据库等

SiteMapProvider可以是动态的。例如,它可以仅对节点进行动态查找。与静态SiteMapProvider相比,您应该了解整个结构。因此,这让你决定选择什么

您可以查看
XmlSiteMapProvider
,这是一个很好的“静态”地图提供程序示例

public class CoolMapProvider : StaticSiteMapProvider
{
    public override SiteMapNode BuildSiteMap()
    {
        var root = new SiteMapNode(this, "test", "~/test.aspx");
        base.AddNode(root, null);

        base.AddNode(new SiteMapNode(this, "test-child", "~/test_child.aspx"), root);

        return root;
    }
}

我没有检查这个,但是应该可以工作。

你有到你读过的资源和示例的链接吗?这些看起来都很不错,但是你能给我一个如何将子节点添加到“test”中的例子吗?FWIW,我必须重写
GetRootDoneCore
才能工作。答案更新,你必须使用
base.AddNode
。重构
GetRootDoneCore
,我早就做过了,所以不记得所有的事情,抱歉..有趣的是,MSDN上有完整的示例,请看一看。