2016-05-05 42 views
0

我在我的網站上使用Sitecore.Analytics.Tracker進行個性化設置。我添加了用戶手動更改郵編的功能,這可以改變他們在網站某些部分看到的內容。郵政編碼檢索與Tracker.CurrentVisit.PostalCodeSitecore Analytics Tracker CurrentVisit重置數據(C#,ASP.Net)

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的價值應該持續整個會話。

+0

您正在使用哪個Sitecore版本? –

回答

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,以便以後可以恢復。

+0

但爲什麼CurrentVisit.PostalCode不工作? –

+0

另外我不能使用你的方法,因爲Tracker沒有'Current' –

+0

你在使用Sitecore.Analytics; ? 它實際上是Sitecore.Analytics.Tracker.Current。 如果您的跟蹤器不可用,請確保已啓用Google Analytics: