【问题标题】:Personalized URL for each user using ASP.NET MVC使用 ASP.NET MVC 的每个用户的个性化 URL
【发布时间】:2011-03-18 16:19:09
【问题描述】:

我想创建一个网站,其中每个用户都有自己的主页,并且 URL 的格式为 site\username。如何使用 ASP.NET MVC 路由系统完成此任务?

我正在计划以下 URL 布局:

mysite/ -> 主页
mysite/account/register -> 账户注册页面
mysite/user1 -> user1 主页
mysite/user2 -> user2 主页

以上 URL 将匹配以下 controller\action 模式:

mysite/ -> 主页/索引
我的网站/帐户/注册 -> 帐户/注册
mysite/user1 -> 用户/索引
mysite/user2 -> 用户/索引

如何安排我的 RegisterRoutes 来解决这个问题?

【问题讨论】:

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


    【解决方案1】:

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

    使用mysite/{username} 的问题是如果有人决定使用account 或类似于他们的用户名的东西怎么办?这可能会使他们的页面无法查看。

    【讨论】:

    • 非常有道理,但受保护的用户名列表可能不会超过约 100 个,可以创建一个枚举来帮助验证它。
    【解决方案2】:

    试试

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

    编辑:那些担心用户通过将用户名设置为“帐户”或类似名称来恶意(或意外)破坏这种格式的人应该查看this link

    【讨论】:

    • 我闻到了危险。如果用户选择用户名“帐户”怎么办?
    猜你喜欢
    • 2011-02-24
    • 2011-02-23
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多