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

Dynamics 365 v9:如何在HTML Web资源中使用executionContext.getFormContext()?

在HTML Web资源中使用executionContext.getFormContext()的正确姿势

我来帮你搞定这个问题!在Model-Driven Apps(原Dynamics 365)里,parent.Xrm.Page确实已经被官方弃用,改用executionContext.getFormContext()才是符合当前最佳实践的方式。下面我一步步给你拆解正确的实现方法:

1. 表单中配置Web资源时开启上下文传递

当你把HTML Web资源添加到表单上时,一定要记得在Web资源属性里勾选「传递上下文信息」(英文环境是「Pass execution context as first parameter」)。这个开关是核心——它会让系统自动把executionContext对象作为参数传递给Web资源的加载函数。

2. 在HTML脚本中接收并使用executionContext

接下来在你的HTML文件里,通过加载函数接收这个上下文参数,再调用getFormContext()获取表单上下文对象。直接看示例代码更清楚:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>My Custom Web Resource</title>
    <script type="text/javascript">
        // 定义加载函数,接收executionContext参数
        function initWebResource(executionContext) {
            // 获取formContext,这就是替代parent.Xrm.Page的核心对象
            var formContext = executionContext.getFormContext();
            
            // 示例1:读取字段值
            var accountName = formContext.getAttribute("name").getValue();
            console.log("当前账户名称:", accountName);
            
            // 示例2:设置字段值
            formContext.getAttribute("telephone1").setValue("138-0000-0000");
            
            // 示例3:注册字段变更事件
            formContext.getAttribute("name").addOnChange(function() {
                var updatedName = formContext.getAttribute("name").getValue();
                alert("账户名称已更新为:" + updatedName);
            });
            
            // 示例4:控制字段可见性
            formContext.getControl("fax").setVisible(false);
        }
    </script>
</head>
<!-- 在body的onload事件中传递arguments[0],这就是系统传来的executionContext -->
<body onload="initWebResource(arguments[0])">
    <h4>我的自定义Web资源</h4>
    <!-- 这里可以放你的HTML内容,比如按钮、表格等 -->
</body>
</html>

关键注意事项

  • 别漏了勾选「传递上下文信息」:如果没开这个选项,executionContext会是undefined,调用getFormContext()肯定会报错。
  • 避免直接用parent.Xrm.Page:它不仅会被逐步移除,而且在复杂场景(比如子网格、多表单嵌套)下容易出现上下文混乱的问题,formContext是更可靠的选择。
  • 如果用外部JS文件:把initWebResource函数放在外部JS里,在HTML中通过<script src="your-external-script.js"></script>引用,用法和上面完全一致,同样接收executionContext参数即可。

内容的提问来源于stack exchange,提问作者Decio Figueira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:34:00