4

Tridion.AudienceManagement.API を介して連絡先と連携するコードがいくつかあります。既存の連絡先を操作する場合、一部の は他の連絡先とは異なりExtendedDetailます。まだ値を持っていない値を入力したいときに問題があります

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

問題は、指定された ExtendedDetail が null の場合、その値を設定する方法がないことです。ドキュメントのコード例はこの例をカバーしておらず、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 が null になるシナリオは見たことがありません。連絡先を作成し、拡張データの詳細を取得するために、次の最小限のデータでテストしました。必須で の一部であるIDENTIFICATION_KEY必要がある連絡先を作成する場合、このシナリオに遭遇することはありません。IDENTIFICATION_SOURCEExtendedDetails

//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";

Contact の作成方法に関するコードを投稿できますか?

于 2013-02-04T19:30:48.397 に答える
2

Extended Detail が null の場合、実際には存在しないフィールドを指定しようとしている可能性があります。スペルを間違えたか、データベース テーブルが更新されていないか、データベースに加えた最近の変更がまだ反映されていない可能性があります (Extended Details コレクションは、明らかな理由で大量にキャッシュされています)。

つまり、Extended Detail がデータベースで定義されている場合、そのコレクションで使用できるため、null にはなりません。

于 2013-02-06T10:05:12.070 に答える