带用户名的MVC MapRoute

时间:2012-03-25 14:48:20

标签: asp.net-mvc asp.net-mvc-routing maproute

我正在构建一个小型MVC应用程序。用户登录后,我希望他/她的路线显示:

www.appname.com/username/

当然,在下面为每个用户调用相同的动作,例如/home/index。如何编写MapRoute以实现该目标以及我应该使用哪些其他代码(属性)?

1 个答案:

答案 0 :(得分:1)

将此路径添加到global.asax.cs文件

中的路线
  routes.MapRoute(
            "RouteName", // Route name
            "FixedUrlSegment/{UserName}/{Controller}/{action}/{id}/", // URL with parameters
            new { controller = "ControllerName", 
                  action = "ActionName",
                  id=UrlParameter.Optional
                }, 
        );

我认为您应该使用固定段作为路线的起点,以区别于默认路线或其他路线

当然,在登录操作方法中,您必须重定向到该新路由

return RedirectToRoutePermanent("RouteName", new { username = "UserName",
                                                   action = "Index", 
                                                   controller = "Home",
                                                   id="userId"
                                                 }
                                );
// remember id is not required for that route as mentioned in global file

此示例会将您的网页重定向到网址

www.appname.com/FixedUrlSegment/loggedusername/home/index/loggeduserid