我试图添加一个路由到默认路由,所以我有两个url工作:
> http://www.mywebsite.com/users/create
> http://www.mywebsite.com/users/1
这将使第一条路线工作:
routes.MapRoute( name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "users",action = "Index",id = UrlParameter.Optional } );
但是,第二条路线不会明显.
这将使第二条路线工作,但将打破第一条路线:
routes.MapRoute( name: "Book",url: "books/{id}",action = "Details" } );
如何组合两个路由配置,使两个URL工作?
如果在SO上已经有这样的问题,我很抱歉,我找不到任何东西.
解决方法
关键是要先提出更具体的路线.所以把“书”的路线放在第一位.编辑我想你还需要一个约束,只允许数字匹配此路由的“id”部分.结束编辑
routes.MapRoute( name: "Book",action = "Details" },constraints: new { id = @"\d+" } ); routes.MapRoute( name: "Default",id = UrlParameter.Optional } );
并确保您的“详细信息”操作中的“id”参数是一个int:
// "users" controller public ActionResult books(int id) { // ... }
这样,“图书”路线将不会捕获像/ users / create这样的网址(由于第二个参数被重新定义为一个数字),所以将会落在下一个(“默认”)路由.