C# 当使用区域时,路由映射不会细化控制器操作方法。错误:找不到资源

C# 当使用区域时,路由映射不会细化控制器操作方法。错误:找不到资源,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我试着搜索了这么多,读了几个答案,但我就是不能让这个路线图工作。我肯定我错过了一些简单的东西 我想通过url传递一个可选的“tab”字符串,这样我就可以在呈现的页面上预先选择一个选项卡。所需URL示例:http://localhost/Manufacture/Job/View/1234/process-route-tab/ 我能想到的其他可能相关信息是: 我正在使用区域 这是唯一映射的路线 以下映射适用于此URL:http://localhost/Manufacture/Job/View/123

我试着搜索了这么多,读了几个答案,但我就是不能让这个路线图工作。我肯定我错过了一些简单的东西

我想通过url传递一个可选的“tab”字符串,这样我就可以在呈现的页面上预先选择一个选项卡。所需URL示例:http://localhost/Manufacture/Job/View/1234/process-route-tab/

我能想到的其他可能相关信息是:

我正在使用区域 这是唯一映射的路线 以下映射适用于此URL:http://localhost/Manufacture/Job/View/1234/

但在上面的示例URL中包含选项卡部分会导致“找不到资源”错误

Global.asax.cs摘录 JobController.cs摘录 到目前为止,我已经尝试了各种各样的修补工作,但都没有什么不同:

从操作方法中删除notifications参数 在映射中硬编码控制器名称和操作名称,即job/view/{id}/{tab} 在RegisterRoutes方法中,将其作为默认映射之前的单独映射
希望有人能在这里透露一些信息,并阻止我在这样一个小细节上浪费时间。

每个区域的区域文件夹中都有一个区域路由注册文件。您应该在ManufactureArea文件夹中的ManufactureAreaRegistration.cs文件中更改路线

大概

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Manufacture_default",
        "Manufacture/{controller}/{action}/{id}/{tab}",
        new { action = "Index", id = UrlParameter.Optional, tab = UrlParameter.Optional }
    );
}

关于

如果您正在使用区域,这不应该是唯一的路线。您应该在ManufactureAreaRegistration.cs的制造区文件夹中更改路线。谢谢@shakib-您完全正确。我不知道在每个地区的注册文件中都设置了路线。我已经在那里进行了更新,然后按照预期工作。不客气。作为答复添加:
public class JobController : BaseController 
{

    // ...

    public ActionResult View(int id, string tab = "info", string notifications = "")
    {
        // Never gets here!
        Notification.UnSerialize(notifications);
        return View();
    }
}
public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Manufacture_default",
        "Manufacture/{controller}/{action}/{id}/{tab}",
        new { action = "Index", id = UrlParameter.Optional, tab = UrlParameter.Optional }
    );
}