Verweis auf Web.sitemap aus DLL

04/05/2010 - 22:18 von Thomas Ehlert | Report spam
Hallo!

Ich schreibe gerade an einem Menücontrol herum, was ein CSS-kompatibles
Menü aufbauen soll. Eigentlich braucht es nur mit einer bestimmten Website
laufen und ich könnte der Einfachheit halber das Ganze direkt in der Website
aufbauen, hàtte es aber gerne in einer externen Library, wo schon einige
andere Controls drin liegen.

Ich wollte in RenderContents einfach die aktuelle Sitemap schnappen und vom
Rootnode anfangend rekursiv aufbauen. Von der Logik her soweit kein Problem.
Probleme dagegen scheint mein selbstgestrickter Sitemap-Provider zu machen.
Wenn ich das Control im Ansichts-Designer auf meine Seite ziehe, kommt,
anstatt dem sauber aufgebauten DIV / UL / LI Auflistungen nur die
Fehlermeldung:
"Der für den defaultProvider angegebene Anbieter aspNetXMLSiteMapProvider
ist in der Auflistung nicht vorhanden."

?

Das will ich hoffen, ich habe ihn ja höchstpersönlich aus den Providern
rausgeschmissen! Meine Web-Config sieht momentan folgendermaßen aus:

<siteMap enabled="true" defaultProvider="SEESitemapProvider">
<providers>
<clear/>
<add name="SEESitemapProvider"
type="SEE.Core.Providers.SEESitemapProvider" securityTrimmingEnabled="true"
connectionStringName="TdConnectionString"/>
</providers>
</sitemap>

Der Provider sollte funktionieren, wenn ich eine Sitemapdatasource auf die
Seite packe und z.B. ein Treeview verknüpfe, funktioniert das ganz
hervorragend.

Im RenderContent des Controls mache ich folgendes:

Dim prv As Core.Providers.SEESiteMapProvider = CType(Web.SiteMap.Provider,
Core.Providers.SEESiteMapProvider)
Dim rootnd As SiteMapNode = prv.RootNode
writer.AddAttribute(HtmlTextWriterAttribute.Id, "mainMenu")
writer.AddAttribute(HtmlTextWriterAttribute.Class, "mainMenu")
writer.RenderBeginTag(HtmlTextWriterTag.Div)
If rootnd IsNot Nothing Then
etc. pp


Sorry für den Haufen Text, aber ich bin mir absolut unsicher wo es jetzt
hakt. Kann man denn aus einer externen Library in dieser Form auf die
Web.Sitemap.Providerklasse verweisen? Liegt dort das Problem? Oder hat
jemand von Euch eine Idee wo ich noch suchen könnte?

TIA
Thomas
 

Lesen sie die antworten

#1 Thomas Ehlert
05/05/2010 - 11:21 | Warnen spam
Hallo!

Ok, mit ein wenig Puzzelei bin ich jetzt dahinter gekommen, dass tatsàchlich
nicht einfach auf den webseitigen Sitmapprovider aus der Library heraus
zugegriffen werden kann. Funktionieren tut allerdings ein
Sitemapdatasource-Control, welches einfach an das Servercontrol gebunden wird.
Dann kann per: Set rootnode=_siteMapDataSource.Provider.RootNode durch die
Nodes-Auflistung gelaufen werden.

Gruß
Thomas

Ähnliche fragen