Dynamics Portals Liquid中获取Option Set标签的语法求助
获取Dynamics Portals中关联实体选项集的标签
我来帮你解决这个问题!你遇到的情况主要有两个核心原因:一是当前FetchXML只请求了选项集的数值,没有获取对应的标签;二是Liquid语法的字段引用需要调整才能正确读取到目标值。
问题分析
你在FetchXML测试器里能看到选项集数值(1000000),但页面上无法显示,大概率是字段引用的语法细节问题;而要显示标签,则需要在查询中明确请求标签数据,Portals不会自动将数值转换为标签文本。
解决方案步骤
1. 修改FetchXML,同时获取选项集的数值与标签
在关联实体的属性列表中,添加一个带format="labels"的属性配置,并用别名区分数值和标签:
{% fetchxml utilisation_stats %} <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="contact"> <attribute name="contactid" /> <filter type="and"> <condition attribute="contactid" operator="eq" uitype="contact" value="{{ user.Id }}" /> </filter> <link-entity name="account" from="accountid" to="parentcustomerid" visible="false" link-type="outer" alias="acc_exec_data"> <attribute name="name" /> <attribute name="new_optionset" /> <!-- 获取选项集数值 --> <attribute name="new_optionset" alias="new_optionset_label" format="labels" /> <!-- 获取选项集标签 --> </link-entity> </entity> </fetch> {% endfetchxml %}
2. 优化Liquid代码,正确读取并显示标签
由于你的查询是针对当前用户的Contact记录,理论上只会返回一条结果,用first方法可以简化遍历逻辑,避免循环产生的多余空格:
<div class="container" style=""> <div class="row"> <!-- 显示关联账户名称 --> <input type="text" class="form-control" id="name" value="{% assign contact = utilisation_stats.results.entities.first %} {{ contact['acc_exec_data.name'] | default: '' }}"> <!-- 显示选项集标签 --> <input type="text" class="form-control" id="eventsAttended" value="{{ contact['acc_exec_data.new_optionset_label'] | default: '' }}"> <!-- 如需显示选项集数值,可保留以下代码 --> <!-- <input type="text" class="form-control" id="optionsetValue" value="{{ contact['acc_exec_data.new_optionset'] | default: '' }}"> --> </div> </div>
3. 额外验证点
- 确认
new_optionset是字段的逻辑名,不要使用显示名称 - 检查Portals的Web角色是否有权限访问Account实体的
new_optionset字段 - 因为是外连接(outer join),关联的Account可能为空,用
default: ''可以避免显示空值或错误信息
调整完成后,你就能正常显示选项集的标签文本了。如果之前数值也无法显示,用上面的数值字段代码可以验证是否能读取到数据,排查权限或字段名是否正确的问题。
内容的提问来源于stack exchange,提问作者fairlo
相关产品推荐
相关产品推荐

