You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:24:03