我有一些代码可以通过Tridion.AudienceManagement.API与Contacts配合使用。使用现有联系人时,其中一些联系人将具有与其他联系人不同的ExtendedDetail
。当我想填充一个没有值
var extendedDetail = contact.ExtendedDetails[fieldName];
if (extendedDetail == null)
{
// What do I do here?
}
问题是当给定的ExtendedDetail为null时,我无法设置其值。文档中的代码示例不包括此示例,API文档不解释null ExtendedDetail的含义,更不用说如何创建它,并适当地填充它。
答案 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_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";
您可以发布关于如何创建联系人的代码吗?
答案 1 :(得分:2)
如果您的扩展详细信息为空,则可能是因为您尝试指定实际上不存在的字段。也许您拼错了它或者您的数据库表尚未更新,或者您最近对数据库所做的更改尚未被提取(出于显而易见的原因,扩展详细信息集合被高度缓存)。
简而言之,如果在数据库中定义了扩展详细信息,那么它将在该集合中可用 - 因此它不会为空。