【问题标题】:Routing Confusion in ASP.NET MVC 4ASP.NET MVC 4 中的路由混淆
【发布时间】:2013-02-01 18:12:45
【问题描述】:

我有一个 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 操作。这就是为什么我认为这是一个路由配置问题。不幸的是,我不明白我的配置错误。有人可以指出我正确的方向吗?

谢谢!

【问题讨论】:

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


【解决方案1】:

你定义的第一条路线应该是这个

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

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

的参数

【讨论】:

  • 有什么方法可以配置路由,以便我可以按照自己的方式使用 '/core/products/add' 作为 url?我真的很想使用那个 URL 结构。谢谢你的帮助!
  • 在您的情况下,它不是关于配置 routes 以使用该 url,而是配置应用程序本身。您需要从 Product 视图中添加产品(可能是部分),并且 add 将是传递给控制器​​中 Product 操作的参数
【解决方案2】:

如果您配置了默认路由:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

访问/core/products/add时,您将被重定向到:

控制器 = 核心 行动 = 产品 id = 添加

这解释了奇怪的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2014-05-25
    • 2016-04-26
    • 2014-11-04
    相关资源
    最近更新 更多