MVC用户在Url中的全名,如何处理重复项

时间:2013-03-21 16:42:27

标签: asp.net-mvc-4 routes custom-url

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

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'怎么办,我该如何处理呢?

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

我是否被迫将用户的ID包含在网址中(我不想出现的内容)?

1 个答案:

答案 0 :(得分:2)

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

或者(和/或另外),如果找到两个相同的名称,则将脚本重新路由到消歧页面,向用户显示许多现有Steve Joneseses的链接和简档信息片段,以便他们可以转到完整正确的个人资料。

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

如果你担心,如果没有史蒂夫琼斯或史蒂夫琼斯,有些人可能更喜欢史蒂夫 - 琼斯 -