mvc sitemap provider:菜单消失

时间:2012-10-19 14:35:32

标签: mvcsitemapprovider

我正在使用mvcsitemap为我正在开发的webapp创建菜单,子菜单和breadcrump。我在xml配置中使用preserveroutevalues,以便在渲染链接时移动我的(很多)参数。当用户开始使用查询参数时,菜单/子菜单/面包屑会在一些页面加载后消失。这是不一致的,我不能一直重现它,但它发生得太过分了。

我的路线

routes.MapRoute(
                    name: "ForwardCurveDefault",
                    url: "forward-curve/{commoditycode}/{selectedyear}-{selectedmonth}-{selectedday}",
                    defaults: new {
                        controller = "ForwardCurve", action = "index",
                        selectedyear = default(DateTime).Year,
                        selectedmonth = default(DateTime).Month,
                        selectedday = default(DateTime).Day,
                        commoditycode = "none"
                    }
                );
routes.MapRoute(
                    name: "Consumption",
                    url: "consumption/{commoditycode}/{managedcompanyid}/{entityid}/{startyear}-{startmonth}-{startday}/{endyear}-{endmonth}-{endday}",
                    defaults: new {
                        controller = "Consumption", action = "Index",
                        // begining of current month.
                        startyear = default(DateTime).Year,
                        startmonth = default(DateTime).Month,
                        startday = default(DateTime).Day,
                        // end of current month.
                        endyear = default(DateTime).Year,
                        endmonth = default(DateTime).Month,
                        endday = default(DateTime).Day,
                        commoditycode = "none",
                        managedcompanyid = 0,
                        entityid = 0,
                    }
                );

 routes.MapRoute(
                    name: "Budget",
                    url: "budget/{commoditycode}/{managedcompanyid}/{entityid}/{startyear}-{startmonth}-{startday}/{endyear}-{endmonth}-{endday}",
                    defaults: new {
                        controller = "Budget", action = "Index",
                        // begining of current month.
                        startyear = default(DateTime).Year,
                        startmonth = default(DateTime).Month,
                        startday = default(DateTime).Day,
                        // end of current month.
                        endyear = default(DateTime).Year,
                        endmonth = default(DateTime).Month,
                        endday = default(DateTime).Day,
                        commoditycode = "none",
                        managedcompanyid = 0,
                        entityid = 0,
                    }
                );

我的站点地图

<mvcSiteMapNode title="Data Management" controller="ForwardCurve" action="Index" key="DataManagement" preservedRouteParameters="commoditycode,selectedyear,selectedmonth,selectedday">
  <mvcSiteMapNode title="Forward curves" controller="ForwardCurve" action="Index" key="forwardcurve" preservedRouteParameters="commoditycode,selectedyear,selectedmonth,selectedday"/>
  <mvcSiteMapNode title="Consumption" controller="Consumption" action="Index" key="consumption" preservedRouteParameters="commoditycode,managedcompanyid,entityid,startyear,startmonth,startday,endyear,endmonth,endday"/>
  <mvcSiteMapNode title="Budget" controller="Budget" action="Index" key="budget" preservedRouteParameters="commoditycode,managedcompanyid,entityid,startyear,startmonth,startday,endyear,endmonth,endday"/>
</mvcSiteMapNode>

我得到一个很好的菜单。在来回查看不同的查询值之后,我最终会进入一个包含有效URL且没有菜单的页面。我可以看到我的currentNode为空。

1 个答案:

答案 0 :(得分:0)

您是否已使用version 4.0查看了此信息?节点匹配逻辑已经有了一些重大改进。