我想要一条这样的路线:
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
时,找不到资源。
答案 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