如何更新Tridion受众管理器联系人中的null ExtendedDetail?

时间:2013-02-04 19:12:58

标签: tridion tridion-2011

我有一些代码可以通过Tridion.AudienceManagement.API与Contacts配合使用。使用现有联系人时,其中一些联系人将具有与其他联系人不同的ExtendedDetail。当我想填充一个没有值

的值时,我遇到了麻烦
var extendedDetail = contact.ExtendedDetails[fieldName];
if (extendedDetail == null)
{
  // What do I do here?
}  

问题是当给定的ExtendedDetail为null时,我无法设置其值。文档中的代码示例不包括此示例,API文档不解释null ExtendedDetail的含义,更不用说如何创建它,并适当地填充它。

2 个答案:

答案 0 :(得分:4)

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

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

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

更新:我没有看到ExtendedDetails为null的情况。我使用以下最小数据进行测试以创建联系人,然后获取扩展数据详细信息。在创建联系人时,您需要IDENTIFICATION_KEYIDENTIFICATION_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";

您可以发布关于如何创建联系人的代码吗?

答案 1 :(得分:2)

如果您的扩展详细信息为空,则可能是因为您尝试指定实际上不存在的字段。也许您拼错了它或者您的数据库表尚未更新,或者您最近对数据库所做的更改尚未被提取(出于显而易见的原因,扩展详细信息集合被高度缓存)。

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