4

我有一些代码可以通过 Tridion.AudienceManagement.API 与联系人一起使用。与现有联系人一起工作时,其中一些联系人的ExtendedDetails 与其他联系人不同。当我想填充一个还没有值的值时,我遇到了麻烦

var extendedDetail = contact.ExtendedDetails[fieldName];
if (extendedDetail == null)
{
  // What do I do here?
}  

问题是当给定的 ExtendedDetail 为空时,我无法设置它的值。文档中的代码示例没有涵盖此示例,API 文档也没有解释 null ExtendedDetail 的含义,更不用说如何创建和适当地填充它了。

4

2 回答 2

4

您需要使用 获取/设置 ExtendedDetails 的值.Value

var extendedDetail = contact.ExtendedDetails[fieldName].Value;
if (extendedDetail == null)
{
  contact.ExtendedDetails[fieldName].Value = "VALUE"
}  

供您参考,请查看文档“Audience Manager .NET API”(chm)并查看“ExtendedDetail”类以获取一些示例。

更新:我还没有看到 ExtendedDetails 为空的情况。我使用以下最低限度数据进行了测试,以创建联系人,然后获取扩展数据详细信息。当您创建联系人时,您需要拥有IDENTIFICATION_KEY并且IDENTIFICATION_SOURCE是强制性的并且是 的一部分ExtendedDetails,因此您永远不应该遇到这种情况。

//Create a Contact with basic data..
Contact contact = new Contact();
contact.EmailAddress = "abc@123.com";
contact.SubscriptionStatus = SubscriptionStatus.Subscribed;
contact.ExtendedDetails["IDENTIFICATION_KEY"].Value = "abc@123.com";
contact.ExtendedDetails["IDENTIFICATION_SOURCE"].Value = "Website";
contact.Save();


// UPDATE the User Profile ..
ContactId = new string [] { "abc@123.com", "Website" };
Contact contact = Contact.GetFromContactIdentificatonKeys(ContactId);
contact.ExtendedDetails["NAME"].Value = "NAME";

您能否发布有关如何创建联系人的代码?

于 2013-02-04T19:30:48.397 回答
2

如果您的扩展详细信息为空,可能是因为您试图指定一个实际上不存在的字段。也许您拼错了它,或者您的数据库表尚未更新,或者您对数据库所做的最近更改尚未被拾取(扩展详细信息集合由于明显的原因被大量缓存)。

简而言之,如果在数据库中定义了扩展详细信息,它将在该集合中可用——因此它不会为空。

于 2013-02-06T10:05:12.070 回答