2012-06-13 3 views
0

Итак, вот что я над этим работаю. У меня есть веб-приложение ASP.NET, в котором карта сайта отображается в файле site.master через web.sitemap. Вот Site.Master:Как объединить web.sitemap и SiteMapProvider в ASP.NET

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 
<asp:TreeView 
ID="TreeView1" 
runat="server" 
ataSourceID="SiteMapDataSource1" 
ExpandDepth="1"> 
    </asp:TreeView> 

И вот Web.sitemap:

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="~/Default.aspx" title="Home" description="Home">   
     <siteMapNode url="" title="Projects" description="">   
     </siteMapNode> 
     <siteMapNode url="" title="Configurations" description="Configurations"> 
     <siteMapNode url="" title="Experiments" description="Experiments"> 
     </siteMapNode> 
     <siteMapNode url="" title="Cell Line" description =""></siteMapNode> 
     <siteMapNode url ="" title ="Drugs"> 
     </siteMapNode> 
     <siteMapNode url ="" title="Manage Configurations" /> 
      <siteMapNode url="~/ExperimentConfigurationView.aspx" title ="Configure Experiements"/> 
      <siteMapNode url="~/DrugConfigurationView.aspx" title="Configure Drugs"/> 
     </siteMapNode> 
     </siteMapNode> 
     <siteMapNode url="" title="Drug Recipes" description=""> 
     </siteMapNode> 
    </siteMapNode> 
</siteMap> 

Теперь, вот где я бегу в проблему. То, что я хотел бы сделать, это объединить эту карту сайта с динамически созданным SiteMapProvider и заполнить подэлементы этой карты. Например, каждый из узлов проектов, экспериментов, ячеек и рецептов наркотиков будет иметь поддерево, заполненное из базы дат. У кого-нибудь есть вход или предложение о том, с чего начать искать?

Подводя итог - я хотел бы указать лист siteMapNodes на SiteMapProvider.

ответ

0

Решение:

Я добавил файл DrugListProvider.cs в корневом каталоге. Это содержит код для динамического генерации поддерева.

я поместил следующий узел в Web.sitemap, где я хотел суб-дерево появляться:

<siteMapNode provider="DrugListProvider"/>

Наконец, я включил это в файле web.config:

<siteMap> 
    <providers> 
    <add name="DrugListProvider" type="PrivoWeb.DrugListProvider"/> 
    </providers> 
</siteMap>