您需要创建多条路线,并将它们保持在适当的顺序
// one route for Users
routes.MapRoute("Users",
"{username}/{action}/{id}",
new { controller = "Users", action = "Index", username = string.Empty, id = UrlParameter.Optional },
new { id = @"\d+" }
);
// one route for everything else
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional},
new { id = @"\d+" }
);
它不像上面“真的”那么容易,但这就是它的要点。您还需要添加一个RouteConstraint来验证用户名。
最后,如果您使用的是用户名参数,那么为什么需要 id?只是一个想法。
另外:
如果您查看 StackOverflow 上的用户部分,您会看到路由看起来更像这样。
- 用户/{id}/{用户名}
- 用户/{id}/编辑
- 用户/{id}/删除
我个人会说要实现的工作要少得多……但是,这只是我。