"路由表中的路由与提供的值不匹配。"仅在一个视图上抛出错误

时间:2015-10-20 21:33:03

标签: asp.net-mvc

我今天在我的项目中遇到了一个奇怪的问题:我在整个网站中使用此操作来为给定页面生成面包屑:

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

这条路线是我在网站其他地方使用的典型路线(属性路由)。

2 个答案:

答案 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的内容,问题就解决了。