ASP.NET MVC 4中的路由混淆

时间:2013-02-01 18:12:45

标签: asp.net-mvc-4 asp.net-mvc-routing

我有一个ASP.NET MVC 4应用程序。由于某种原因,路由总是抛弃我。目前,我的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操作。这就是为什么我认为这是一个路由配置问题。不幸的是,我不明白我的配置错误。有人能指出我正确的方向吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

mvc中的url是controller / action / param / param / etc. 您的第一条路线是寻找Core / Products / 一些名为add

的参数

答案 1 :(得分:0)

如果您配置了默认路由:

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

这解释了这种奇怪的行为。