/ / Probleme beim Binden des XML-Knotens in mvc.SiteMap an die Routen in global.asa? - asp.net-mvc, mvcsitemapprovider, mvcsitemap, asp.net-mvc-sitemap

Probleme beim Binden des XML-Knotens in mvc.SiteMap an die Routen in global.asa? - asp.net-mvc, mvcsitemapprovider, mvcsitemap, asp.net-mvc-sitemap

Ich verwende MVC3, C # 4, Rasierer, MvcSiteMapProvider V4.

Ich versuche, meine MvcSiteMapNodes in meiner Datei mvc.sitemap explizit an meine Routen in meiner global.asa zu binden. Aber es scheint nicht zu funktionieren. Ohne Zweifel habe ich etwas ausgelassen.

meine Routen in global.asa:

  routes.MapRoute("Report", "Report/{ClientId}", new { controller = "Report", action = "Index", ClientId = UrlParameter.Optional });
routes.MapRoute("Report_Section", "Report/{ClientId}/Section/{ReportId}", new { controller = "Section", action = "FilterByReport", ReportId = UrlParameter.Optional });

Teil meiner mvc.sitemap:

        <mvcSiteMapNode title="Reports" controller="Report" action="Index" preservedRouteParameters="ClientId" route="Report">
<mvcSiteMapNode title="Sections" route="Report_Section">

Meine 2 URLs sind also:

Berichte Route:

Report/10

Berichte_Sections-Route:

Report/10/Section/100

Ich bekomme die Anerkennung nicht beim zweitenRoute, und daher erscheint der Breadcrumb-Pfad nicht auf der entsprechenden Seite. Ich hatte gehofft, nur durch die Angabe des "route" -Attributs in mvc.sitemap würde der mvcSiteMapProvider die beiden verbinden.

Gedanken. Wo bin ich falsch gegangen?

Danke vielmals

BEARBEITEN:

Es scheint, dass ich "Controller" und "Aktion" in "mvc.sitemap" und "route" angeben muss.

         <mvcSiteMapNode title="Sections" controller="Section" action="FilterByReport"  route="Report_Section" preservedRouteParameters="ClientId,ReportId">

Antworten:

1 für die Antwort № 1

Der Routenparameter dient zum Eingrenzen der Übereinstimmung miteine bestimmte Route, anstatt zu versuchen, alle Routen abzugleichen. Die Angabe der Route reicht jedoch nicht aus, um sie anzupassen. Sie müssen außerdem Ihre Aktions-, Controller-, (optionalen) Bereichs- und (optionalen) Aktionsparameter angeben.

Damit es so aussieht, als erinnere ich mich an IhreSie müssen einen Knoten für jede mögliche Kombination aus ClientID und ReportID zu Ihrer Sitemap hinzufügen. Dies kann ziemlich einfach mit ein paar erreicht werden DynamicNodeProviders um Ihre Daten aus Ihrer Datenbank / Datenquelle zu laden. Das gesamte Prinzip basiert auf dem Abgleichen einer eindeutigen Position innerhalb der Karte, und Sie benötigen diese IDs, um jede Übereinstimmung eindeutig zu machen.

Normalerweise wird für PreservedRouteParameters verwendetjede ID mit einem Aktionsmethodenparameter in CRUD-Vorgängen abgleichen. Auf diese Weise können Sie das Hinzufügen / Bearbeiten / Löschen von Seiten mit jeder ID abgleichen, ohne diese IDs in der Sitemap zu registrieren.