/ / Sin migas de pan con MVCSiteMapProvider MvcRouteHandler personalizado - migas de pan, sitemapprovider, sitemappath

Sin migas de pan con MVCSiteMapProvider custom MvcRouteHandler - breadcrumbs, sitemapprovider, sitemappath

Tengo 2 rutas en global.asax

        routes.MapRoute(
"DefaultFriendlyUrl",
"Page/{FriendlyUrl}",
null,
new string[] { "MvcApplication2.Controllers" }
).RouteHandler = new FriendlyUrlRouteHandler();


routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "index", id = UrlParameter.Optional },
new string[] { "MvcApplication2.Controllers" }
);

entonces, FriendlyUrlRouteHandler trabaja todas mis rutas / Page / blablabla y envía a PageController con 1 índice de acción

public class FriendlyUrlRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var friendlyUrl = (string)requestContext.RouteData.Values["FriendlyUrl"];

PageItem page = null;

if (!string.IsNullOrEmpty(friendlyUrl))
page = PageManager.GetPageByFriendlyUrl(friendlyUrl);

if (page == null)
{
requestContext.RouteData.Values["controller"] = "home";
requestContext.RouteData.Values["action"] = "index";
requestContext.RouteData.Values["id"] = null;
}
else
{
requestContext.RouteData.Values["controller"] = "page";
requestContext.RouteData.Values["action"] = "index";
requestContext.RouteData.Values["id"] = page.PageID;
}

return base.GetHttpHandler(requestContext);
}
}

Entonces PageController obtiene contenido para mi página y lo muestra. Pero MvcSiteMapProvider no muestra migas de pan para estas páginas

SiteMap.cs

public class SiteMap : DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
var returnValue = new List<DynamicNode>();
returnValue.Add(new DynamicNode() { Key = "id1", Title="CustomPage", Controller="Page", Action="Index" });
return returnValue;
}
}

Y mi CustomPage no existe en @ Html.MvcSiteMap (). SiteMapPath (), pero la página se muestra correctamente. ¿Qué pasa en mi código? Entonces no puedo construir el árbol de mis páginas personalizadas en una cadena de migas de pan ...

Respuestas

1 para la respuesta № 1

Proporcione su Mvc.sitemap.

Parece que a su instancia de DynamicNode le falta ParentKey.