我有一个MVC项目是默认的映射,我改为:
routes.MapRoute("Default", "{controller}/{id}/{action}/{arg}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional, arg = UrlParameter.Optional }
);
关注控制器:
/Controllers/HomeController.cs:
public ActionResult Index(int? id)
{
return RedirectToAction("Index", "EPOS");
}
/Controllers/EPOSController.cs:
public ActionResult Index(int? id)
{
return View();
}
在HomeController中遇到一个断点,但在EPOSController
中没有遇到断点,我收到此错误:
路由表中没有路由与提供的值匹配。
我做错了什么?
答案 0 :(得分:4)
我认为问题是因为您的Default
路线不正确:
routes.MapRoute("Default", "{controller}/{id}/{action}/{arg}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional, arg = UrlParameter.Optional }
);
您不能在必需参数之前有可选参数。如果您将上述路线更改为此会怎样?
routes.MapRoute("Default", "{controller}/{action}/{id}/{arg}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional, arg = UrlParameter.Optional }
);
答案 1 :(得分:0)
我认为Shark是对的,尝试将你的路线图分成两个这样的定义(我没有测试过)
routes.MapRoute("Default", "{controller}/{id}/{action}/{arg}",
new { controller = "Home", action = "Index",
arg = UrlParameter.Optional }
);
routes.MapRoute("Default", "{controller}/{id}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);