Sitemap Projektabhängig

12/10/2009 - 10:59 von Thomas Ehlert | Report spam
Hallo beisammen,

ich sitze hier seit einigen Tagen (Wochen) an dem Problem, in einer Sitemap
eine Projektabhàngigkeit zu implementieren.
Soll heissen, ich möchte, abhàngig von einer Projektauswahl im Login, eine
andere Sitemap (aus einer SQL-Server DB) geliefert bekommen.
Rolle, Membership und Membershipuser-Provider sind bereits "customized" und
tun Ihren Dienst.
Mein Problem liegt im Sitemap-Provider. Ich müssste, je nach Anmeldung, ja
eine dynamisch zusammengesetzte Sitemap bekommen. Sowohl die Berechtigungen
für die SitemapNodes als auch die "Zusammensetzung" der Sitemap können von
Projekt zu Projekt deutlich voneinander abweichen. Die Sitemap ansich verhàlt
sich aber persistent, da Sie ja Standardmàßig nur einmal vorhanden ist.
Wie bekomme ich es hin, das ich je nach Projekt mit einer anderen Sitemap
arbeiten kann?
Meine Idee ziehlt in die Richtung, mehrere Provider gleichzeitig zu nutzen
und je nach Bedarf den einen oder anderen zu benutzen.
Die Sitemap.Providers - Auflistung sieht ja recht vielversprechend aus.
Könnte ich innerhalb der Masterpage, welche die Navigation anzeigen soll,
einfach auf einen Provider aus der Auflistung verweisen? So in der Richtung:

Me.SitemapDataSource=Sitemap.Providers("Projekt")

In der Hoffnung, dass das funktioniert, wie bekomme ich die diversen
Providerinfos in die Auflistung?
Bislang konfiguriere ich das in Web.config. Könnte ich theoretisch im
Session.OnStart nachschauen ob der Provider bereits existiert und
gegebenenfalls dort nachschieben? Und zu schlechter letzt - was passiert bei
mglw. Dutzenden von Projekten?
Wie bekommt man einen kaum noch benutzten Provider dort wieder raus?

Ein Haufen Fragen, die aber alle irgendwie zusammenhàngen, daher nur ein
Thread.

TIA Thomas
 

Lesen sie die antworten

#1 Thomas Bandt
12/10/2009 - 11:54 | Warnen spam
Thomas Ehlert wrote:
ich sitze hier seit einigen Tagen (Wochen) an dem Problem, in einer Sitemap
eine Projektabhàngigkeit zu implementieren.
Soll heissen, ich möchte, abhàngig von einer Projektauswahl im Login, eine
andere Sitemap (aus einer SQL-Server DB) geliefert bekommen.



Frage 1: Wozu brauchst du die Sitemap? Imho lohnt sich der
Aufwand hierfür fast nie, da die Sitemap ja nur zusammen
mit den 0815-Webcontrols wie Tree oder SiteMapPath einen
Sinn macht, und die passen auch nicht in jedem Fall.

Von daher ist man meist besser damit bedient sich die
jeweiligen Navigations-Controls selbst zu erstellen.

Rolle, Membership und Membershipuser-Provider sind bereits "customized" und
tun Ihren Dienst.
Mein Problem liegt im Sitemap-Provider. Ich müssste, je nach Anmeldung, ja
eine dynamisch zusammengesetzte Sitemap bekommen. Sowohl die Berechtigungen
für die SitemapNodes als auch die "Zusammensetzung" der Sitemap können von
Projekt zu Projekt deutlich voneinander abweichen. Die Sitemap ansich verhàlt
sich aber persistent, da Sie ja Standardmàßig nur einmal vorhanden ist.
Wie bekomme ich es hin, das ich je nach Projekt mit einer anderen Sitemap
arbeiten kann?
Meine Idee ziehlt in die Richtung, mehrere Provider gleichzeitig zu nutzen
und je nach Bedarf den einen oder anderen zu benutzen.



Frage 2: Warum mehrere Provider? Das was generiert werden
muss, ist ja immer das gleiche, d.h. es tut eigentlich
ein einziger Provider, der dir dann die Nodes je nach
Berechtigungen usw. zusammenbaut.

Vielleicht kann dir ein Blick in den Code als Ansatz ja
helfen:

http://blog.thomasbandt.de/39/727/d...ellen.html

(Beachte auch den Kommentar unten)

Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de

Ähnliche fragen