C# 当使用区域时,路由映射不会细化控制器操作方法。错误:找不到资源
我试着搜索了这么多,读了几个答案,但我就是不能让这个路线图工作。我肯定我错过了一些简单的东西 我想通过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方法中,将其作为默认映射之前的单独映射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
希望有人能在这里透露一些信息,并阻止我在这样一个小细节上浪费时间。每个区域的区域文件夹中都有一个区域路由注册文件。您应该在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 }
);
}