Asp.net 通过变量检索MS CRM字段的值

Asp.net 通过变量检索MS CRM字段的值,asp.net,dynamics-crm,dynamics-crm-4,Asp.net,Dynamics Crm,Dynamics Crm 4,我有一个关于Dynamics CRM 4.0 Web服务的问题。我一直在使用它将记录从CRM获取到ASP.NET。在请求和转换之后,可以通过以下方式访问列的值(例如联系人) BusinessEntity be = getBusinessEntity(service, crmGuid, type, colnames); contact tmp = (contact)be; Response.Write("firstname: " + tmp.firstname + "<BR>");

我有一个关于Dynamics CRM 4.0 Web服务的问题。我一直在使用它将记录从CRM获取到ASP.NET。在请求和转换之后,可以通过以下方式访问列的值(例如联系人)

BusinessEntity be = getBusinessEntity(service, crmGuid, type, colnames);
contact tmp = (contact)be;

Response.Write("firstname: " + tmp.firstname + "<BR>");
Response.Write("lastname: " + tmp.lastname+ "<BR>");
如果我现在这样做,我会得到一个错误,colnames不是tmp的字段。 有什么想法吗?

不使用BusinessEntity(除非您使用反射)。DynamicEntity可按从属性派生的类型枚举。您必须执行类似的操作(我是从内存中执行此操作的,因此可能无法编译)

请注意,如果使用此方法,将获得值(string、CrmNumber、Lookup),而不是整个属性(StringProperty、CrmNumber属性等)

这回答了你的问题吗?此外,我建议使用SDK程序集,而不是web引用。它们更容易使用。但是,如果您选择使用web引用,SDK下载有一个帮助程序类列表。在SDK中搜索“Helper”。

不使用BusinessEntity(除非使用反射)。DynamicEntity可按从属性派生的类型枚举。您必须执行类似的操作(我是从内存中执行此操作的,因此可能无法编译)

请注意,如果使用此方法,将获得值(string、CrmNumber、Lookup),而不是整个属性(StringProperty、CrmNumber属性等)


这回答了你的问题吗?此外,我建议使用SDK程序集,而不是web引用。它们更容易使用。但是,如果您选择使用web引用,SDK下载有一个帮助程序类列表。在SDK中搜索“Helper”。

好的,这是一个好的选项。我一直在尝试使用DynamicEntity,但我花了太长时间才弄明白如何使用DynamicEntity获得属性的实际值。你有什么建议吗?我可以获取名称和类型,但不能获取值…我的注释太长,请参见正文。我将主要使用字符串属性,但也会进行一些查找。我确实尝试过使用SDK,但在使用自定义字段时遇到了问题。在SDK中,如果我执行类似tmp.new_customfield1的操作,代码将无法编译。(其中tmp为联系人)。也许这也可以通过使用动态度来解决。我要用百分位来检查你的方法。太好了!是的,对于自定义字段和SDK,您必须使用索引器。WSDL具有强类型属性的优点,但即使如此,我发现SDK也更易于使用。实际上,您也可以找到用于MSCRM的强类型生成器,因此您可以使用SDK并使用tmp.new_customfield1。好的,这是一个不错的选项。我一直在尝试使用DynamicEntity,但我花了太长时间才弄明白如何使用DynamicEntity获得属性的实际值。你有什么建议吗?我可以获取名称和类型,但不能获取值…我的注释太长,请参见正文。我将主要使用字符串属性,但也会进行一些查找。我确实尝试过使用SDK,但在使用自定义字段时遇到了问题。在SDK中,如果我执行类似tmp.new_customfield1的操作,代码将无法编译。(其中tmp为联系人)。也许这也可以通过使用动态度来解决。我要用百分位来检查你的方法。太好了!是的,对于自定义字段和SDK,您必须使用索引器。WSDL具有强类型属性的优点,但即使如此,我发现SDK也更易于使用。实际上,您也可以找到用于MSCRM的强类型生成器,因此您可以使用SDK并使用tmp.new_customfield1。
for(int i = 0; i < colnames.length; i++)
{
    Response.write(colnames[i] + ": " + tmp.colnames[i] + "<BR>");
}
for(int i = 0; i < colnames.length; i++)
{
  string colName = colnames[i];
  foreach(Property prop in tmp)
  {  
    if (prop.name != colName)
      continue;
    if (prop is StringProperty)
    {
       var strProp = prop as StringProperty;
       Response.Write(String.Format("{0}: {1}<BR />", colName, strProp.Value));
    } 
    else if (prop is LookupProperty)
    {
      ...
     }
    ... for each type deriving from Property

  }
}
string firstname = (string)tmp["firstname"];