0

我想在我的 MVC4 网站中设置以下 url,在 url 中使用用户的全名:

http://www.myapp.com/profile/steve-jones

我在 Global.asax 中设置了以下路线:

    routeCollection.MapRoute(
      "profile", "profile/{userName}", 
       new { controller = "myController", action = "profile", userName = string.Empty 
    });

我可以获取参数'steve-jones'并将其与具有匹配名称的用户匹配。我唯一的问题是,如果有多个'Steve Jones',我该如何处理?

有谁知道解决方法/解决方案,以便我可以使用用户的全名作为 url 的一部分,并且仍然能够在控制器方法中检索正确的用户?

我是否被迫在 url 中包含用户的 ID(我不想出现的东西)?

4

1 回答 1

2

处理此问题的常用方法是在创建配置文件时附加一个数字。因此,如果“steve-jones”已经是数据库中的名称,则将用户的显示名称设为“steve-jones2”。您基本上必须坚持所有个人资料网址都是唯一的,其中包括更新任何现有数据库和帐户创建代码。

或者(和/或另外),如果找到两个相同的名称,则让脚本重新路由到消歧页面,在该页面中,用户会看到许多现有 Steve Jonesese 的链接和个人资料信息片段,以便他们可以转到完整正确的个人资料.

另一种处理方法是在最后为所有用户配置文件提供一个额外的数字代码。在我的大学,所有登录都是基于姓名的,因此他们为每个人提供了伪随机的 3 位数扩展名,这样只要他们没有得到 1000 个具有完全相同姓名的人,他们就安全了 :)

如果您担心的话,如果没有 steve-jones 或 steve-jones1,有些人可能会更高兴成为 steve-jones-342。

于 2013-03-21T16:48:25.737 回答