asp.net mvc路由模式是
{"some_parameter/{controller}/{action}/{id}"}
如果some_parameter
可以为null或字符串为空
答案 0 :(得分:3)
修改强>
我刚刚对路线注册进行了重新排序,以便它可以正常工作:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {
controller = "home",
action = "index",
id = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{some_parameter}/{controller}/{action}/{id}", // URL with parameters
new {
some_parameter = UrlParameter.Optional,
controller = "home",
action = "index",
id = UrlParameter.Optional
}
);
他们应该按照该顺序注册。另外,第二个路由需要一个id和some_parameter参数,否则它将永远不会被击中,因为它之前的路由。即使some_parameter和id参数设置为可选,也不会发生这种情况,因为前面的路由会在它为空时捕获它。
答案 1 :(得分:3)
我认为你想要的是{some_parameter}/{controller}/{action}/{id}
(注意“some_parameter”周围的大括号),在这种情况下,我认为它不应该为空或空。在some_parameter
为空的情况下,您认为您的结束URL可能与路线匹配? “mysite.com//mycontroller/myaction/myid”?
路由引擎只匹配模式。如果您想同时处理{some_parameter}/{controller}/{action}/{id}
和{controller}/{action}/{id}
,只需定义两条路线。