Asp.net mvc 如何使此路由在我的ASP.NET MVC应用程序中工作?

Asp.net mvc 如何使此路由在我的ASP.NET MVC应用程序中工作?,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我想要一条这样的路线: MyController/Action/categoryid/productid 因此,我在Global.asax文件中做了以下操作: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name

我想要一条这样的路线:

MyController/Action/categoryid/productid

因此,我在Global.asax文件中做了以下操作:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
      "Default", // Route name
      "{controller}/{action}/{categoryid}/{productid}",
      new { controller = "MyController", 
            action = "Action", 
            categoryid = UrlParameter.Optional, 
            productid = UrlParameter.Optional 
      } 
    );

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

但是当我浏览到Mycontroller/action/2/3时,找不到资源。

Phil Haack有一个很棒的工具,你可以在地址栏中键入各种URL来查看哪个路由匹配。

Phil Haack有一个很棒的工具,你可以在地址栏中键入各种URL来查看哪个路由匹配。

此代码是如何生成的?将Default定义为路由名称两次必须停止对其进行编译

将其中一个重命名为其他名称,它必须工作

您的操作可能有其他参数,或者您已经将[HttpPost]定义为属性,并且您正在使用GET。

这段代码是如何生成的?将Default定义为路由名称两次必须停止对其进行编译

将其中一个重命名为其他名称,它必须工作

您的操作可能有其他参数,或者您已将[HttpPost]定义为属性,并且您正在使用GET。

这是您想要的:

{MyController}/{action}/{categoryid}/{productid}

但是应该给Url中的MyController/Action部分起一个更有意义的名字,比如Users/Edit/2/3这是您想要的:

{MyController}/{action}/{categoryid}/{productid}


但是应该给你的MyController/Action部分的Url起一个更有意义的名字,比如Users/Edit/2/3

Yes!我确实有一些有意义的名字!这只是为了张贴在这里。这是我想要的,但什么是你的解决方案!好的,然后看看其他答案中提到的路由调试器。这是一个伟大的工具。是的!我确实有一些有意义的名字!这只是为了张贴在这里。这是我想要的,但什么是你的解决方案!好的,然后看看其他答案中提到的路由调试器。这是一个伟大的工具。是的!你答对了!我对路线使用了重复的名称!是的!你答对了!我对路线使用了重复的名称!