0

Sitecore.Analytics.Tracker在我的网站上使用个性化。我增加了用户手动更改邮政编码的功能,这会改变他们在网站某些部分看到的内容。邮政编码检索与Tracker.CurrentVisit.PostalCode

public string GetCurrentZipCode()
{
    return Tracker.CurrentVisit.PostalCode.IsNotNullOrEmpty() ? Tracker.CurrentVisit.PostalCode : String.Empty;
}

public void SetCurrentZipCode(string zip)
{
    Tracker.CurrentVisit.PostalCode = zip;

}

这可行,但很挑剔;时不时地重新加载页面时,邮政编码会变回默认值,我发现这是因为有时当页面加载时 PostalCode 会变回空字符串。

为什么Tracker.CurrentVisit.PostalCode要重置?这是 Sitecore 中的设置吗?我怎样才能阻止它?理想情况下,PostalCode 的值应该在整个会话中保持不变。

4

1 回答 1

0

联系人有一个地址集合,可用于存储此信息。

Sitecore.Analytics.Model.config:

<facets>
  <facet name="Addresses" contract="Sitecore.Analytics.Model.Entities.IContactAddresses, Sitecore.Analytics.Model" />
</facets>

有关这些接口的详细信息,请参阅 IContactAddresses 和 IAddress。IContactAddresses 有一个 Entries 集合,它是 IAddress 对象的列表。

访问当前联系人的地址信息:

private IContactAddresses _addressInfo;

protected IContactAddresses  AddressInfo
{
    get
    {
        return _addressInfo ?? (_addressInfo = Tracker.Current.Contact.GetFacet<IContactAddresses>("Addresses"));
    }
}

您可以获取表示当前联系人地址信息的此对象并更新各种属性以将该数据保存在内存中,直到用户会话结束。届时数据将被写回 xDB,以便您稍后取回。

于 2016-05-05T17:00:50.743 回答