如何在Dynamics 365的extraqs参数中传递含&的字段值
解决Dynamics 365 extraqs参数含&符号的预填字段解析问题
当通过URL的extraqs参数预填Dynamics 365新建表单字段时,若字段值包含&这类特殊字符,仅单次URL编码(%26)无效,需执行双重URL编码,具体操作如下:
核心原理
extraqs作为主URL的参数值,其内部的参数分隔符(&)会被Dynamics误判为URL参数的分割点。因此需要先对字段内的特殊字符编码,再对整个extraqs字符串编码,确保内部的&不会干扰参数解析。
具体步骤
单次编码字段值:将字段值中的
&替换为%26(或使用URL编码工具/函数处理单个字段值)。
示例:Bar & Restaurant→Bar %26 Restaurant构建完整extraqs字符串:将预填的所有字段按格式拼接成字符串,比如关联账户的场景:
parentcustomerid=%7b账户ID%7d&parentcustomeridname=Bar %26 Restaurant&parentcustomeridtype=account二次编码整个extraqs字符串:对上述完整字符串执行URL编码,此时
%26会被转换为%2526,其他符号如=、&也会被编码为%3d、%26。
编码后的字符串示例:parentcustomerid%3d%257b账户ID%257d%26parentcustomeridname%3dBar%20%2526%20Restaurant%26parentcustomeridtype%3daccount拼接主URL:将二次编码后的字符串作为
extraqs参数值,拼入Dynamics新建表单的URL中:https://你的组织域名.crm.dynamics.com/main.aspx?etn=contact&pagetype=entityrecord&extraqs=二次编码后的字符串
在PowerBI和Canvas App中的实现
- PowerBI:使用
URLENCODE函数嵌套实现双重编码,比如:URLENCODE(URLENCODE("parentcustomerid=%7bXXX%7d&parentcustomeridname=Bar & Restaurant&parentcustomeridtype=account")) - Canvas App:使用
EncodeUrl函数嵌套处理:EncodeUrl("parentcustomerid=%7bXXX%7d&parentcustomeridname=" & EncodeUrl("Bar & Restaurant") & "&parentcustomeridtype=account")
内容的提问来源于stack exchange,提问作者Martijn Kluck
相关产品推荐
相关产品推荐

