如何生成自定义唯一ID [英] How to generate custom unique ID
本文介绍了如何生成自定义唯一ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们使用的是带多站点实施的Sitecore 7.2。实际数据在多站点之间共享,因此存储在通用全局项目文件夹中。
我们在URL上生成唯一ID时遇到问题。我进行了很好的搜索,但除了使用Sitecore项目ID之外,找不到任何解决方案。
这就是我们想要的:
domain/player/player_id 例如DOMAIN/Player/1234
其中1234是唯一生成的ID。
有人能建议一下这是否可能吗?
推荐答案
Sitecore中管理的每个页面都是Sitecore项目。因此,您应该能够导航到播放器项的名称。如果您试图在您的帖子中说明播放器项目是以全局形式存储的,而不是以页面形式存储,那么您可以选择以下选项:
查询字符串:
domain/players/player?playerId={ID}
- 如果这是您选择的路线,那么我建议使用播放器项的Sitecore ID作为查询字符串参数的值。
- 如果您有其他ID,则将指定的ID放在那里,但是使用Sitecore ID会更容易
- 然后您要做的是获取具有查询字符串参数中指定的ID的项目(或获取具有查询字符串参数中指定的玩家ID的项目,具体取决于您采用的路线),并在页面上显示该玩家的数据
Sitecore.Context.Database.GetItem(Request.QueryString["playerId"])
playerItems.FirstOrDefault(playerItem => playerItem["Player ID"] == Request.QueryString["playerId"])
- 请注意,这假设播放器ID是一个字段,而不是Sitecore ID
- 如果是Sitecore ID,则将lambda更改为使用
playerItem.ID == new ID(Request.QueryString["playerId"]
- 无论您使用哪种方法,我都建议将NULL检查添加到QueryString getter中
- 子布局参数
- 如果使用此方法,查询字符串不会更改,用户将无法从直接URL访问页面
- 该过程与查询字符串相同,不同之处在于您使用的是子布局参数
- 请注意,您必须在父子布局或Sitecore中设置这些内容(这意味着您对每个玩家都有单独的页面-即这不是一个好的解决方案)
- 虚拟项目
- 我想这就是您要找的
- 如果您从头开始,这可能需要大量工作,或者您可以使用the Wildcard Module
- 如果从头开始,您将需要一个自定义管道和/或处理器来处理请求
这篇关于如何生成自定义唯一ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文