2013-06-25 26 views
2

我正在创建一个Dynamics CRM 2011的插件,以便在排定潜在客户时执行。我用这个代码使用context.InputParameters [“Target”]

IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
IOrganizationService service = factory.CreateOrganizationService(null); 
Entity curEntity = (Entity)context.InputParameters["Target"]; 

但是当我得到context.InputParameters["Target"]它说没有找到密钥。如何在获得潜在客户资格时获得主要实体?

回答

5

如果你的插件是在QualifyLead消息(Lead作为主要实体),你可以得到这样的参考牵头执行:

public void Execute(IServiceProvider serviceProvider) 
{ 
    ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); 
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 
    if (context.InputParameters.Contains("LeadId") && context.InputParameters["LeadId"] is EntityReference) 
    { 
     EntityReference leadReference = (EntityReference)context.InputParameters["LeadId"]; 
     Guid leadId = leadReference.Id; 
     // rest of your code 

基本上这个消息不包含Target参数,而是包含LeadId参数。

+0

是否有任何概览显示,哪些消息提供哪些InputParameters?现在我要去调试一个插件并查找给定的参数。 – Marvin

+0

好问题,但我从来没有找到可能的输入参数列表 –

+0

我还没有找到一个好的概述,但明确的答案是在MSDN文章[理解传递给插件的数据上下文](https:// msdn.microsoft.com/en-us/library/gg309673.aspx#bkmk_inputandoutput):“请求中实际公共属性的名称。”因此请查看您的OrganizationRequest的属性。在你的情况下,[QualifyingLeadRequest](https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.qualifyleadrequest_properties.aspx)。你可以看到有一个LeadId属性,但没有目标。 –