Sitecore PowerShell 如何让下拉列表显示重复字符串值而非Guid
问题原因
你当前给Read-Variable传入的有序哈希表结构是{Guid = 显示名称},而Read-Variable渲染下拉列表时,默认使用哈希表的键作为下拉项的展示文本,哈希表的值作为用户选择后实际返回的结果,所以才会出现展示Guid的问题。
解决方案
因为你需要允许重复的显示名称,而哈希表的键必须全局唯一,所以不能直接把显示名称当键,这里提供两种适配方案:
方案1:保留重复展示名,选中后可获取对应Guid
给重复的显示名称后追加零宽不可见字符保证键唯一,用户肉眼看不到差异:
$options = [Ordered]@{} $displayNameCount = @{} foreach ($i in $Items) { $displayName = $i.DisplayName # 统计当前显示名出现的次数 if (-not $displayNameCount.ContainsKey($displayName)) { $displayNameCount[$displayName] = 0 } $displayNameCount[$displayName]++ $count = $displayNameCount[$displayName] # 重复项追加零宽空格保证键唯一,用户侧看不到差异 $uniqueKey = $displayName + ("`u{200B}" * ($count - 1)) $options[$uniqueKey] = $i.Id }
你原有的$props配置无需修改,用户下拉看到的全是DisplayName,重复项也能正常显示,选中后$name变量拿到的就是对应项的Guid。
方案2:不需要获取Guid,仅需要返回选中的显示名称
直接把所有DisplayName放到数组里传参即可,不需要用哈希表:
$options = $Items.DisplayName
这个方案更简单,用户下拉看到的就是显示名称,选完$name返回的就是选中的字符串,天然支持重复值。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

