我想创建一个网站,其中每个用户都有自己的主页,其中网址的格式为site\username
。如何使用ASP.NET MVC路由系统实现这一目标?
我正在计划以下网址布局:
mysite / - >主页
mysite / account / register - >帐户注册页面
mysite / user1 - > user1主页
mysite / user2 - > user2主页
以上网址符合以下controller\action
模式:
mysite / - >家用/指数
mysite / account / register - >帐户/注册
mysite / user1 - >用户/索引
mysite / user2 - >用户/索引
如何安排我的RegisterRoutes来解决这个问题?
答案 0 :(得分:2)
您可能需要使用mysite/user1
之类的路线,而不是使用像mysite/users/user1
这样的路线。然后将其映射到user/index
操作,并将最后一部分(用户名)作为参数传递给该方法。
使用mysite/{username}
的问题是,如果某人决定使用account
或类似的用户名?它可能会使他们的页面无法访问。
答案 1 :(得分:1)
尝试
routes.MapRoute(
"User",
"{username}",
new { controller ="User", action="Index" }
);
编辑:那些担心用户通过将用户名设置为“帐户”或类似内容而恶意(或意外)违反此格式的用户应该看this link。