我正在将 webforms 应用程序转换为 MVC。前面的程序员构建了一个继承 StaticSiteMapProvider 类的类来创建他的站点地图。然后他把这个控件放在页面上
<asp:SiteMapDataSource ID="sitemapSQLMenuProvider" runat="server" ShowStartingNode="False" />
并像这样初始化它
Dim oSqlSiteMapProvider As New SQL.SiteMap.Provider.SQLSiteMapProvider(Session("KPISystemUserID"), PagePath)
oSqlSiteMapProvider.Initialize("MySiteMap", Nothing)
SiteMapDataSource1.Provider = oSqlSiteMapProvider.
然后他使用菜单控件并指定数据源
<asp:Menu ID="menuMaster" runat="server" DataSourceID="sitemapSQLMenuProvider"/>
我在我的 MVC 项目中创建了一个类,并将代码复制过来以创建 SQLSiteMapProvider 类。它创建了节点……子节点……等等。Nuget 的 MvcSiteMapProvider 包是否有一种简单的方法可以简单地将此类指定为从何处获取节点?所有文档都在不断尝试让您使用静态 XML 文件(我不能使用它,因为我们的菜单来自数据库)。
看起来 webform 程序员在 web.config 中像这样设置了他的提供程序
<siteMap defaultProvider="KPIMap" enabled="false">
<providers>
<clear />
<add name="KPIMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/System/MY.sitemap" />
</providers>
</siteMap>
那个xml文件很简单
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
<siteMapNode url="" title="" description="" />
<siteMapNode url="" title="" description="" />
</siteMapNode>
</siteMap>
您会认为他们会添加一种简单的方法来插入 StaticSiteMapProvider 类的名称并完成它。