0

我在 global.asax 中有 2 条路线

        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" }
        );

所以,FriendlyUrlRouteHandler 处理我所有的 /Page/blablabla 路由并使用 1 个操作索引发送到 PageController

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);
    }
}

然后 PageController 为我的页面获取内容并显示它。但是 MvcSiteMapProvider 不显示这些页面的面包屑

站点地图.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;
    }
}

而且我的 CustomPage 不存在于 @Html.MvcSiteMap().SiteMapPath() 中,但页面显示正确。我的代码有什么问题?所以我不能在面包屑字符串中构建我的自定义页面的树......

4

1 回答 1

1

请提供您的 Mvc.sitemap。

您的 DynamicNode 实例似乎缺少 ParentKey。

于 2011-09-23T13:31:52.400 回答