【发布时间】:2011-03-10 18:50:49
【问题描述】:
我是 MVC 和 URL 路由的新手,正在寻找一些指导。
我希望能够为每个用户提供一个 URL,其格式为: http://www.example.com/username
所以我添加了以下路线:
routes.MapRoute(
"UserRoute", // Route name
"{username}", // URL
new { controller = "Users", action = "ViewUser", username = UrlParameter.Optional }
);
如果它是 FIRST 路由,效果很好,但它搞砸了默认的 {controller}/{action}/{id} 路由。现在,当我尝试访问根页面时,它会尝试使用 null 参数(或使用“favicon.ico”作为参数)加载我的 UsersController“ViewUser”操作。
如果我将新路由放在默认路由之后,则 MVC 会尝试查找名为 username 的控制器,但由于找不到它而失败。
有没有什么方法可以在不破坏常规路由系统的情况下获得 {username} 形式的 URL?我可能会为我拥有的每个控制器编写一个自定义路由,但这似乎很容易出错。
【问题讨论】:
-
你是对的,路由容易出错。如果您想完全忘记路由问题,请查看mvccoderouting.codeplex.com。
标签: asp.net asp.net-mvc-3 url-routing asp.net-mvc-routing