Asp.net mvc 4 ASP.NET MVC 4中的路由混乱

Asp.net mvc 4 ASP.NET MVC 4中的路由混乱,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我有一个ASP.NETMVC4应用程序。由于某种原因,我总是对路线感到厌烦。目前,我的RouteConfig.cs文件有三条路由: routes.MapRoute( "AddProductStep1", "{controller}/products/add", new { controller = "Core", action = "AddProduct" } ); routes.MapRoute( "Products", "{controller}/products",

我有一个ASP.NETMVC4应用程序。由于某种原因,我总是对路线感到厌烦。目前,我的RouteConfig.cs文件有三条路由:

routes.MapRoute(
  "AddProductStep1",
  "{controller}/products/add",
  new { controller = "Core", action = "AddProduct" }
);

routes.MapRoute(
  "Products",
  "{controller}/products",
  new { controller = "Core", action = "Products" }
);

routes.MapRoute(
  "Home",
  "{controller}/dashboard",
  new { controller = "Core", action = "Dashboard" }
);
如果我访问/core/products,我会看到与我的产品关联的视图。如果我访问/core/products/add,我仍然会看到相同的视图。我在控制器中设置了一个断点,并注意到在这两种情况下都会调用Products操作。这就是为什么我认为这是一个路由配置问题。不幸的是,我不明白我配置错误了什么。有人能给我指出正确的方向吗


谢谢大家!

您定义的第一条路线可能应该是这条路线

routes.MapRoute(
  "AddProductStep1",
  "{controller}/addProduct",
  new { controller = "Core", action = "AddProduct" }
);
mvc中的url是controller/action/param/param/etc
如果配置了默认路由,则第一个路由将查找核心/产品/名为add的某些参数:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
访问
/core/products/add
时,您将被重定向到:

controller = Core action = Products id = Add 控制器=核心 行动=产品 id=添加
这解释了奇怪的行为。

使用路由调试器。是否有任何方法可以配置路由,以便以我想要的方式使用“/core/products/add”作为url?我真的很想使用这个URL结构。谢谢你的帮助!在您的情况下,不是配置使用该url的路由,而是配置应用程序本身。您需要从产品视图中添加产品(使用部分视图),并且add将是传递给控制器中产品操作的参数