自定义路线不在Razor View中呈现面包屑

时间:2014-05-01 11:05:48

标签: asp.net-mvc asp.net-mvc-5 mvcsitemapprovider

我们有一个使用Sitemap Provider 4.5.2的MVC5应用程序。总体而言,它在99%的情况下都能正常工作..

如果我们在AreaRegistration.cs中定义了一个自定义路由,如果我们注释掉自定义路径,那么它就不起作用了,面包屑可以工作..但我们需要一些自定义参数的路由。

以下是我们的AreaRegsitration.cs

中定义的路线
//ATS/Vacancy/Edit/33
context.MapRoute(
    "ATS_Vacancy",
    "ATS/Vacancy/{action}/{VacancyID}",
    new { Controller = "Vacancy", VacancyID = UrlParameter.Optional }
);

站点地图节点如下所示,它是“创建空缺”节点,不在页面上呈现。应用程序中的其他任何位置都可以正常工作,我删除了大量节点以使其更具可读性。

<mvcSiteMapNode title="Home" controller="Home" area="ATS" action="Index" >
<mvcSiteMapNode title="Vacancy Manager" controller="Vacancies" area="ATS" action="Index" >
<!--Busted Node-->
<mvcSiteMapNode title="Create Vacancy"  controller="Vacancy" area="ATS" action="Create" preservedRouteParameters="VacancyID" cacheResolvedUrl="false" route="ATS_Vacancy" ></mvcSiteMapNode></mvcSiteMapNode>

我们已经摸不着头脑了一段时间,并尝试了网上发现的许多不同的东西,但无济于事。路由引擎工作正常&amp;每次都会解析页面。指定路径时,站点地图也会解析为正确的节点,但似乎无法将其渲染出来。

任何建议都会受到欢迎。谢谢你的想法......

2 个答案:

答案 0 :(得分:0)

您的路线与默认路线类似。

如果可能,请将控制器操作方法更改为接受ID而不是VacancyID并删除自定义路由,看看是否有效。

答案 1 :(得分:0)

当使用带有MvcSiteMapProvider的区域来确定区域名称时,您必须在路径中包含至少1个名称空间。

//ATS/Vacancy/Edit/33
context.MapRoute(
    "ATS_Vacancy",
    "ATS/Vacancy/{action}/{VacancyID}",
    new { Controller = "Vacancy", VacancyID = UrlParameter.Optional },
    new string[] { "MyNamespace.Areas.ATS.Controllers" }
);

有关详细信息,请参阅this answer