如何生成自定义唯一ID [英] How to generate custom unique ID

查看:18
本文介绍了如何生成自定义唯一ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们使用的是带多站点实施的Sitecore 7.2。实际数据在多站点之间共享,因此存储在通用全局项目文件夹中。

我们在URL上生成唯一ID时遇到问题。我进行了很好的搜索,但除了使用Sitecore项目ID之外,找不到任何解决方案。

这就是我们想要的:

domain/player/player_id 例如DOMAIN/Player/1234

其中1234是唯一生成的ID。

有人能建议一下这是否可能吗?

推荐答案

Sitecore中管理的每个页面都是Sitecore项目。因此,您应该能够导航到播放器项的名称。如果您试图在您的帖子中说明播放器项目是以全局形式存储的,而不是以页面形式存储,那么您可以选择以下选项:

  1. 查询字符串: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中

  2. 子布局参数
    • 如果使用此方法,查询字符串不会更改,用户将无法从直接URL访问页面
    • 该过程与查询字符串相同,不同之处在于您使用的是子布局参数
    • 请注意,您必须在父子布局或Sitecore中设置这些内容(这意味着您对每个玩家都有单独的页面-即这不是一个好的解决方案)

  3. 虚拟项目
    • 我想这就是您要找的
    • 如果您从头开始,这可能需要大量工作,或者您可以使用the Wildcard Module
    • 如果从头开始,您将需要一个自定义管道和/或处理器来处理请求

这篇关于如何生成自定义唯一ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆