我们有一个使用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;每次都会解析页面。指定路径时,站点地图也会解析为正确的节点,但似乎无法将其渲染出来。
任何建议都会受到欢迎。谢谢你的想法......
答案 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。