如何知道Dynamics CRM插件上下文中可能的InputParameters值?

时间:2016-10-27 09:51:40

标签: dynamics-crm dynamics-crm-online dynamics-crm-2016

我正在尝试了解here中的插件示例。 有这种情况:

// The InputParameters collection contains all the data passed in the message request.
if (context.InputParameters.Contains("Target") &&
                context.InputParameters["Target"] is Entity)

一般而言,不仅仅是关于这个样本,我应该根据什么先验知识来决定访问特定的财产?我怎么知道测试InputParameters是否包含"Target"键(我假设我不应该猜测它)?

在什么基础上我可以知道"Target"映射的值是Entity类型,而不是其他类型?

我在2年前发现this帖子,我找到this网页,说(重点是我的):

  

在插件中,context.InputParameters和中的值   context.OutputParameters取决于您的消息和阶段   注册插件。例如,“目标”存在于   用于创建和更新消息的InputParameters,但不是   SetState消息。此外,OutputParameters仅存在于Post阶段,   而不是在Pre阶段。 没有单一的文档来源   它提供了完整的InputParameters和OutputParameters   通过消息和阶段

从我的搜索中,单个来源仍然不存在,但也许可以使用动态在线平台找到可能的值,在设置菜单的深处,也许?任何来源都会很棒。

3 个答案:

答案 0 :(得分:6)

我知道这是一个已经回答的“旧”问题,但我认为这可能会有所帮助。我已经构建了一个小网页,其中包含所有带有所有输入/输出参数的消息。您可以从here

访问它

enter image description here

答案 1 :(得分:2)

这样做的最佳做法是使用强类型方法。例如,如果您想知道CreateRequest上哪些属性可用,您可以这样做:

var createReq = new CreateRequest() { Parameters = context.InputParameters };
createReq.Target; // Has type Entity

查看解释此方法的完整博客文章:Tip: Proper handling of Plugin InputParameters

原始答案:

这取决于我们正在谈论的请求。请参阅MSDN上的Understand the data context passed to a plug-in

  

举个例子,看看CreateRequest。一个属性   CreateRequest名为Target,其类型为Entity。这是   当前由平台操作的实体。访问   您将使用名称“Target”作为关键字的实体数据   输入参数集合。你还需要施放返回的   实例

     

请注意,并非所有请求都包含类型的Target属性   实体,因此您必须查看每个请求或响应。例如,   DeleteRequest具有Target属性,但其类型为EntityReference。

总结:查看实际请求,例如CreateRequest

答案 2 :(得分:2)

2011年,有人实际根据消息类型生成了类型化属性。有点整洁:https://xrmpalmer.wordpress.com/2013/05/27/crm2011-plugin-inputparameter-and-outputparameter-helper/

它会显示您希望每条消息都有参数。