我想在我的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包含在网址中(我不想出现的内容)?
答案 0 :(得分:2)
处理此问题的常用方法是在创建配置文件时附加一个数字。因此,如果“steve-jones”已经是数据库中的名称,则将用户的显示名称设为“steve-jones2”。您基本上必须坚持所有配置文件网址都是唯一的,包括更新任何现有的数据库和帐户创建代码。
或者(和/或另外),如果找到两个相同的名称,则将脚本重新路由到消歧页面,向用户显示许多现有Steve Joneseses的链接和简档信息片段,以便他们可以转到完整正确的个人资料。
另一种处理方法是在最后为所有用户配置文件提供额外的数字代码。在我的大学,所有登录都基于名称,因此他们为每个人提供伪随机3位数扩展,以便他们是安全的,只要他们没有1000名具有完全相同名称的人:)
如果你担心,如果没有史蒂夫琼斯或史蒂夫琼斯,有些人可能更喜欢史蒂夫 - 琼斯 -