2013-02-04 1 views
4

Tridion.AudienceManagement.API를 통해 주소록과 작동하는 코드가 있습니다. 기존 연락처로 작업 할 때 일부 연락처는 다른 연락처보다 다른 ExtendedDetail을 갖습니다. 이미Tridion 잠재 고객 관리자 연락처에서 ExtendedDetail을 어떻게 업데이트합니까?

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

문제는 주어진 ExtendedDetail가 null 때, 나는 그것의 값을 설정할 수있는 방법이 없다는 것입니다 값이없는 값을 채울 할 때 문제가 있어요. 설명서의 코드 예제는이 예제를 다루지 않으며 API 설명서에는 ExtendedDetail의 의미에 대해 설명하지 않습니다.

+0

와우, 나는 extendedDetail이 null 일 수 있다는 것에 놀랐습니다. 아무리 값이 없더라도 항상 ExtendedDetail 개체가 있어야한다고 생각 했었습니다. AM 연락처가 동일한 확장 된 세부 필드를 공유하더라도 그들은 모두 사용되지 않습니다. – Neil

답변

4

.Value을 사용하여 ExtendedDetails의 값을 가져 오거나 설정해야합니다. 참고로

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

하면 문서 "대상 관리자 .NET API를"(CHM)를 살펴보고 몇 가지 예에 대해 "ExtendedDetail"클래스를 확인하시기 바랍니다.

업데이트 : ExtendedDetails가 null 일 때 시나리오를 보지 못했습니다. 연락처를 만들고 확장 된 데이터 세부 정보를 얻으려면 다음 최소 데이터로 테스트했습니다. 연락처를 만들 때 IDENTIFICATION_KEYIDENTIFICATION_SOURCE이 필수이고 ExtendedDetails의 일부이므로이 시나리오를 실행해서는 안됩니다.

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


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

연락처를 만드는 방법에 대한 코드를 게시 할 수 있습니까?

+0

contact.ExtendedDetails [fieldName]이 null 인 경우 어떻게해야합니까? Value 속성을 어디에서 찾을 수 있습니까? –

+0

우리는 새로운 사용자를 생성하는 데 사용하고 있으며 확장 필드 [fieldname]이 null로 표시되지 않습니다. 이상하다, 다시 확인한다. –

+0

감사합니다. 기존 연락처를 업데이트하는 것입니다. 새로운 것들로는 아무런 문제가 없습니다 –

2

확장 세부 정보가 null 인 경우 실제로 존재하지 않는 필드를 지정하려고했기 때문일 수 있습니다. 잘못 입력했거나 데이터베이스 테이블이 업데이트되지 않았거나 데이터베이스에 대한 최근 변경 사항이 아직 선택되지 않았습니다 (명백한 이유로 확장 된 세부 정보 컬렉션이 많이 캐시 됨).

간단히 말해 확장 정보가 데이터베이스에 정의되어 있으면 해당 컬렉션에서 사용할 수 있으므로 null이되지 않습니다.