/ / ¿Tiene problemas para enlazar el nodo XML en mvc.SiteMap a las rutas en global.asa? - asp.net-mvc, mvcsitemapprovider, mvcsitemap, asp.net-mvc-sitemap

¿Tiene problemas para enlazar el nodo XML en mvc.SiteMap a las rutas en global.asa? - asp.net-mvc, mvcsitemapprovider, mvcsitemap, asp.net-mvc-sitemap

Estoy usando MVC3, C # 4, Razor, MvcSiteMapProvider V4.

Estoy intentando enlazar mis MvcSiteMapNodes en mi archivo mvc.sitemap explícitamente a mis rutas en mi global.asa. pero no parece funcionar. Sin duda he omitido algo.

Mis rutas en 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 });

Parte de mi mvc.sitemap:

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

Así que mis 2 URL son:

Informes de Ruta:

Report/10

Informes_Secciones Ruta:

Report/10/Section/100

No estoy recibiendo el reconocimiento en el segundoy, por lo tanto, el rastro de ruta de navegación no aparece en la página correspondiente. Esperaba que solo especificando el atributo "ruta" en mvc.sitemap, el mvcSiteMapProvider los uniría a los dos.

Pensamientos ¿Dónde me he equivocado?

Muchas gracias

EDITAR:

Parece que necesito especificar el "controlador" y la "acción" en "mvc.sitemap" y la "ruta" por sí sola no funcionará.

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

Respuestas

1 para la respuesta № 1

El parámetro de ruta es para reducir el partido auna ruta específica en lugar de tratar de hacer coincidir todas las rutas. Sin embargo, solo especificar la ruta no es suficiente para que coincida. También debe proporcionar su acción, controlador, área (opcional) y parámetros de acción (opcional).

Además, para que parezca recordar turuta de navegación, debe agregar un nodo para cada combinación posible ClientID / ReportID a su mapa del sitio. Esto se puede lograr con bastante facilidad usando un par de DynamicNodeProviders para cargar sus datos desde su base de datos / fuente de datos. Todo el principio se basa en hacer coincidir una ubicación única dentro del mapa, y usted necesita esos ID para que cada coincidencia sea única.

PreservedRouteParameters se utiliza normalmente parahaga que cualquier ID coincida con un parámetro del método de acción en las operaciones CRUD. Esto le da la posibilidad de hacer que sus páginas de agregar / editar / eliminar coincidan con cualquier ID sin registrar esas ID en el mapa del sitio.