【问题标题】:"No route in the route table matches the supplied values." Error thrown on one view only“路由表中没有路由与提供的值匹配。”仅在一个视图上引发错误
【发布时间】:2016-01-19 17:37:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您是否总是为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);
    }
    

    【讨论】:

    • 我总是提供一个值 - 但以防万一我像你建议的那样提供了一个默认值并且错误仍然存​​在。
    【解决方案2】:

    希望这个答案对将来的某个人有所帮助 - 问题与我传递给控制器​​的变量名 area 有关。由于我的项目有一个“区域”文件夹,因此导致路由问题。我只需要将area 更改为region 之类的东西,问题就解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多