2013-02-01 145 views
0

我有一个ASP.NET MVC 4应用程序。出于某种原因,路由总是让我失望。目前,我的RouteConfig.cs文件有三个途径:ASP.NET MVC中的路由混乱4

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" } 
); 

如果我访问/核心/产品,我看到我的产品相关联的视图。如果我访问/核心/产品/添加,我仍然看到相同的看法。我在我的Controller中设置了一个断点,并注意到Products操作在两种情况下都被调用。这就是为什么我相信这是一个路线配置问题。不幸的是,我不明白我配置不正确。有人能指引我朝着正确的方向吗?

谢谢!

+0

使用路由调试器。 http://nuget.org/packages/routedebugger – asawyer

回答

0

您已经定义了第一条路线也许应该是这个,而不是

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

MVC中的URL是控制器/动作/参数/参数/等 你的第一途径是寻找核心/产品/ 一些参数命名添加

+0

有没有什么办法可以配置路由,以便我可以按照我想要的方式使用'/ core/products/add'作为url?我真的想使用该网址结构。感谢您的帮助! –

+0

在你的情况下,它不会是配置*路由*使用该网址,而是配置应用程序本身。您需要从产品视图中添加产品(使用部分可能),并且添加将是传递给控制器​​中产品操作的参数 –

0

如果您配置的默认路由:

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

当交流cessing /core/products/add你会被重定向到:

 
controller = Core 
action = Products 
id = Add 

这解释了奇怪的行为。