2010-07-20 59 views
1

我想创建一个网站,其中每个用户都有自己的主页,并且URL的格式为site\username。我怎样才能完成这与ASP.NET MVC路由系统?使用ASP.NET MVC的每个用户的个性化网址

我打算后续URL布局:

mysite的/ - >主页
的mysite /帐号/注册 - >帐号注册页面
的mysite/USER1 - > user1的主页
的mysite /用户2 - > user2的主页

上面的网址将匹配以下controller\action模式:

mysite的/ - >主页/指数
的mysite /帐号/注册 - >帐户/注册
的mysite/USER1 - >用户/指数
的mysite /用户2 - >用户/指数

如何我可以安排我的RegisterRoutes解决这个问题吗?

回答

1

尝试

routes.MapRoute(
    "User", 
    "{username}", 
    new { controller ="User", action="Index" } 
); 

编辑:那些担心用户恶意(或无意)通过使他们的用户名是“帐户”或类似的应该看看this link东西打破这种格式。

+0

我闻到危险。如果用户选择用户名'帐户'会怎么样? – BritishDeveloper 2010-07-20 23:00:26

2

而不是使用像mysite/user1这样的路线,您可能需要使用类似mysite/users/user1的路线。然后将其映射到user/index操作并让它传递最后一部分(用户名)作为该方法的参数。

使用mysite/{username}时出现的问题是,如果有人决定使用account或其他类似的用户名?这可能会使他们的页面无法查看。

+0

非常有效的担心,但受保护的用户名列表可能不会超过〜100左右,可以使枚举来帮助验证它。 – 2010-07-20 21:02:04