我有一个SPList
观众意识,我需要从SPListItem
.
string Audiences;
public Class1(SPListItem item)
{
this.Audiences = item[FieldId.AudienceTargeting] as string;
}
到目前为止,我已经做到了这一点。我一直在寻找如何从项目中解析每个观众,但我找不到太多帮助。
有人知道这样做吗?
我有一个SPList
观众意识,我需要从SPListItem
.
string Audiences;
public Class1(SPListItem item)
{
this.Audiences = item[FieldId.AudienceTargeting] as string;
}
到目前为止,我已经做到了这一点。我一直在寻找如何从项目中解析每个观众,但我找不到太多帮助。
有人知道这样做吗?
我认为从列表中检索受众定位内容的正确方法是执行以下操作。
string audString = item[fieldId.AudienceTargeting] as string;
string[] audienceIds;
string[] distinguishedNames;
string[] spGroups;
AudienceManager manager = new AudienceManager();
AudienceManager.GetAudienceIDsFromText(audienceAsText, out audienceIds, out distinguishedNames, out spGroups);
var namesList = manager.GetAudienceNames(new ArrayList(globalAudienceID.Select(id => new Guid(id)).ToList()));
这样如果字符串的格式发生变化,GetAudienceEIDsFromText 中 api 的变化也会随之变化。
从这篇文章来看应该是这样的
public Class1(SPListItem item)
{
string ID = item[FieldId.AudienceTargeting] as string;
string NewID = ID.Remove(36);
Guid guid = new Guid(NewID);
Audience siteAudience = audManager.GetAudience(guid);
}
然后可能是 siteAudience.GetMembership();
当您想要第一个受众时,这很有用。有了这些台词,我受到启发去做这样的事情,这应该让我拥有所有观众的阵列:
public Class1(SPListItem item)
{
string ID = item[FieldId.AudienceTargeting] as string;
string audiences = audienceTargeting.Split(';')[0];
String[] audiencesArray = audiences.split(',');
}
然后迭代以通过指南吸引观众。
请记住此处描述的受众目标的语法:http: //www.sharepoint-tips.com/2011/01/setting-target-audiences-with-code.html
我稍后会在测试后确认。