c# - 如何使用 Tridion 的出站电子邮件 API 检索联系人的关键字?

标签 c# tridion

我正在使用 Tridion.OutboundEmail.ContentManagement API 来检索和管理联系人详细信息。

检索联系人工作正常,提取 ExtendedDetails 字典也是如此,但关键字 TcmUriCollection 始终为空。

[Test]
public void GetContacts_via_address_book()
{
    var uri = new TcmUri(101, 2, TcmItemTypes.StaticAddressBook);
    var addressBook = new StaticAddressBook(uri);
    var contacts = addressBook.GetContacts();

    foreach (var contact in contacts) 
    {
        var firstName = contact.ExtendedDetails["NAME"].StringValue;

        Assert.That(contact.EmailAddress, Is.Not.Empty); // PASS
        Assert.That(firstName, Is.Not.Empty); // PASS
        Assert.That(contact.Keywords.Count, Is.GreaterThan(0)); // FAIL
    }
}

我也试过下面的方法:

[Test]
public void GetContacts_via_filter()
{
    var uri = new TcmUri(101, 2, TcmItemTypes.StaticAddressBook);
    var addressBook = new StaticAddressBook(uri);
    var filter = new ContactFilter(UserContext.Current);
    var contacts = Contact.GetContacts(filter, addressBook);

    foreach (var contact in contacts) 
    {
        var firstName = contact.ExtendedDetails["NAME"].StringValue;

        Assert.That(contact.EmailAddress, Is.Not.Empty); // PASS
        Assert.That(firstName, Is.Not.Empty); // PASS
        Assert.That(contact.Keywords.Count, Is.GreaterThan(0)); // FAIL
    }
}

我什至可以将关键字添加到联系人的关键字集合并保存,它在 Tridion 中正确显示,但是当我再次检索相同的联系人时,该集合再次为空。

有没有人对此 API 有任何经验,和/或知道问题出在哪里?

最佳答案

这是因为在您获取联系人列表时未加载关键字。出于性能原因,只有一部分数据可用。

要解决此问题,您需要重新加载每个联系人。由于联系人是从数据库流式传输的,因此您不能在循环内执行此操作。因此,您需要先构建联系人列表,然后遍历它们并完整加载它们。

有关更多信息和示例,请参阅我关于该主题的博客文章: http://pkjaer.wordpress.com/2011/12/01/looping-through-contacts/

关于c# - 如何使用 Tridion 的出站电子邮件 API 检索联系人的关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9687094/

相关文章:

c# - 无法将类型为 'System.Data.Common.DataRecordInternal' 的对象转换为类型 'System.Data.IDataReader'

c# - 缓冲存储器分配

Tridion 2011 : How to sort user list on publishing queue?

c# - "Grouping"字典值

c# - ASP.NET MVC C# : Bringing in data from multiple tables/queries into a view

c# - 在文件夹内创建多个子文件夹

tridion - SDL Tridion Content Porter 2009 SP1 - 同步内容

tridion - 发布无法达到特定组件的特定目标

tridion - 确保我的扩展列表始终显示 "current"数据?

tridion - 在 Tridion 2011 SP1 中访问文件夹时出现问题