如何在预操作插件中使用表单上的字段值
在Dataverse预操作插件中获取未保存的日期字段值
预操作插件运行时,虽然数据还没写入Dataverse,但用户在表单里提交的字段值已经被传递到插件上下文里了,直接从InputParameters集合里提取即可,具体操作如下:
从上下文的
Target参数提取实体记录
用户填写的字段值会被打包在InputParameters的Target参数中,对应正在创建或更新的实体记录,代码示例:// 从插件上下文获取目标实体 Entity target = (Entity)context.InputParameters["Target"]; // 先检查日期字段是否存在(更新操作时,只有用户修改过的字段才会出现在Target里) if (target.Contains("new_yourdatefieldlogicalname")) { // 根据字段配置选择对应类型取值:普通日期用DateTime,时区感知字段用DateTimeOffset DateTime dateVal = target.GetAttributeValue<DateTime>("new_yourdatefieldlogicalname"); // DateTimeOffset dateVal = target.GetAttributeValue<DateTimeOffset>("new_yourdatefieldlogicalname"); // 此处可使用dateVal执行后续业务逻辑 }注意事项
- 必须使用字段的逻辑名称(而非显示名称),逻辑名称可在Dataverse解决方案的字段详情中查看。
- 更新操作场景下,
Target仅包含用户修改过的字段,因此必须先判断字段是否存在,再尝试取值,避免空引用异常。 - Dataverse日期字段分为普通日期和时区感知两种类型,需与字段配置匹配对应的取值类型。
内容的提问来源于stack exchange,提问作者Amandeep Singh
相关产品推荐
相关产品推荐

