我今天在我的项目中遇到了一个奇怪的问题:我在整个网站中使用此操作来为给定页面生成面包屑:
@Html.Action("BreadcrumbsWithHeader2", "SharedElements", new { pageName = @Model.pageName, department = @Model.department, menuHeading = @Model.menuHeading, id = "EandTHeader" })
它只返回一个PartialView。这适用于每个页面,除了一个,它开始抛出此错误:
路由表中没有路由与提供的值匹配。
我已经检查了拼写错误等等,但我不确定如何进一步调试。什么可能导致路由表中的某些内容丢失?
修改:我刚刚注意到网站上的所有ActionLink都指向此页面(不是上面显示的@Html.Action
,而是我称之为的视图部分)正在生成空白href
标签。它的控制器(如果这有帮助)在这里:
[Route("JobFair/FindAJobFair/{area}")]
public ActionResult FindAJobFair(string area, string sideMenu)
{
ViewBag.sideMenu = sideMenu;
JobFairsViewModel jobFairInfo = new JobFairsViewModel()
{
department = "Foo",
menuHeading = null,
pageName = "Job Fairs"
};
return View(jobFairInfo);
}
这条路线是我在网站其他地方使用的典型路线(属性路由)。
答案 0 :(得分:0)
您是否始终为sideMenu
提供值?如果你不这样做可能会导致你的问题。尝试像这样修改你的控制器:
[Route("JobFair/FindAJobFair/{area}")]
public ActionResult FindAJobFair(string area, string sideMenu = null/*default value*/)
{
ViewBag.sideMenu = sideMenu;
JobFairsViewModel jobFairInfo = new JobFairsViewModel()
{
department = "Foo",
menuHeading = null,
pageName = "Job Fairs"
};
return View(jobFairInfo);
}
答案 1 :(得分:0)
希望这个答案可以帮助将来的某个人 - 问题与传递给控制器的变量名area
有关。由于我的项目有一个' Areas'它导致路由问题的文件夹。我只需要将area
更改为类似region
的内容,问题就解决了。