Asp.net mvc 4 MVC用户';Url中的全名,如何处理重复项

Asp.net mvc 4 MVC用户';Url中的全名,如何处理重复项,asp.net-mvc-4,routes,custom-url,Asp.net Mvc 4,Routes,Custom Url,我想在我的MVC4网站中设置以下url,在url中使用用户的全名: http://www.myapp.com/profile/steve-jones 我已在Global.asax中设置了以下路径: routeCollection.MapRoute( "profile", "profile/{userName}", new { controller = "myController", action = "profile", userName = string.

我想在我的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'
与具有匹配名称的用户进行匹配。但我唯一的问题是,如果不止一个“史蒂夫·琼斯”,我该如何处理

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


我是否被迫在url中包含用户id(我不想显示的内容)?

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

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

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


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

谢谢Brian,非常有帮助。唯一的问题是,没有用户名,只有名字和姓氏,我没有访问数据库的权限,数据库由CRMI处理,请看,然后您必须动态地进行操作。也许如果有一个账户创建日期,你可以按照这个日期进行排序,并以这种方式分配数字——因此第一个steve总是steve1,等等。这样,你就可以拥有一个有效的元变量,而不必更改数据库。