如何使这个Route在我的ASP.NET MVC应用程序中工作?

时间:2011-01-17 20:31:50

标签: 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
      "{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时,找不到资源。

3 个答案:

答案 0 :(得分:3)

此代码如何构建?定义"Default"作为路由名称两次必须停止编译。

将其中一个重命名为其他内容并且必须有效。

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

答案 1 :(得分:1)

Phil Haack提供了一个名为ASP.NET Routing Debugger的强大工具,您可以在地址栏中输入各种URL以查看哪条路线匹配。

答案 2 :(得分:0)

这是你想要的:

  

{myController的} / {行动} / {类别ID} / {的productid},

但是应该为Url的MyController / Action部分提供更多有意义的名称,例如Users / Edit / 2/3