我正在将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类的名称并完成它。