/ / Máte ťažkosti so spojením uzla XML v mvc.SiteMap na trasy v global.asa? - asp.net-mvc, mvcsitemapprovider, mvcsitemap, asp.net-mvc-sitemap

Máte problém s viazaním uzla XML v mvc.SiteMap na trasy v global.asa? - asp.net-mvc, mvcsitemapprovider, mvcsitemap, asp.net-mvc-sitemap

Používam MVC3, C # 4, Razor, MvcSiteMapProvider V4.

Snažím sa jednoznačne zviazať svoje súbory MvcSiteMapNodes v mojom súbore mvc.sitemap s mojimi trasami v mojej global.asa. Nezdá sa však, že by fungoval. Nepochybne som niečo vynechal.

moje trasy v 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 });

Časť môjho mvc.sitemap:

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

Moje 2 adresy URL sú:

Trasa správ:

Report/10

Trasa prehľadov:

Report/10/Section/100

Druhé uznanie nedostávamtrasa, a preto sa trasa strúhanky na príslušnej stránke neobjaví. Dúfal som, že zadaním atribútu "route" v mvc.sitemap by mvcSiteMapProvider tieto dva spojil.

Myšlienky. Kde som sa pokazil?

Veľká vďaka

EDIT:

Zdá sa, že potrebujem špecifikovať „kontrolór“ a „činnosť“ v „mvc.sitemap“ a „samotná trasa“ nebude fungovať.

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

odpovede:

1 pre odpoveď č. 1

Parameter trasy slúži na zúženie zhody nakonkrétna trasa, skôr ako sa pokúsiť priradiť všetky trasy. Samotné zadanie trasy však nestačí na to, aby sa zhodovala. Musíte tiež zadať parametre svojej akcie, radiča, (voliteľné) oblasti a (voliteľné) parametre akcie.

Tiež, aby to vyzeralo, že si pamätáte svojebreadcrumb trail, musíte do svojho súboru Sitemap pridať uzol pre každú možnú kombináciu ClientID / ReportID. To možno dosiahnuť pomerne ľahko pomocou niekoľkých DynamicNodeProviders načítať údaje z databázy / zdroja údajov. Celý princíp je založený na priradení jedinečného miesta na mape a tieto identifikátory potrebujete, aby bola každá z nich jedinečná.

PreservedRouteParameters sa zvyčajne používaaby akýkoľvek identifikátor zodpovedal parametru metódy akcie v operáciách CRUD. Získate tak možnosť, aby vaše stránky na pridávanie, upravovanie alebo mazanie zodpovedali každému ID bez toho, aby boli tieto ID zaregistrované v súbore Sitemap.