是否有办法使用服务器对象模型
通过guid搜索/查找特定的托管导航术语此代码
var termGuid = new Guid(fieldValue.TermGuid);
var navTermSet = TaxonomyNavigation.GetTermSetForWeb(SPContext.Current.Web, StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider, true);
if (navTermSet == null) return String.Empty;
var navTerm = navTermSet.Terms.Where(c => c.Id == termGuid).FirstOrDefault();
if (navTerm == null) return String.Empty;
return navTerm.GetWebRelativeFriendlyUrl();
只有当这个词位于第一级时才有效,如果它在层次结构中更深层次却找不到它,而且我没有看到任何其他机制让我得到一个扁平的术语列表
看起来像API的严重限制
答案 0 :(得分:0)
当你看一段时间并且你不知道它有多深,并且它是父母或孩子时,这变得更加复杂。如果API没有直接获取所有条款的方式,无论他们是孩子还是父母,我想你最好的选择是通过循环所有术语+孩子来自己列出它们然后找到它们由Guid。
下面的代码可用于列出所有条款。从this article开始,代码将被简化并缩短。
List<Term> allTerms = new List<Term>();
void BuildTermList()
{
SPSite thisSite = SPContext.Current.Site;
TaxonomySession session = new TaxonomySession (thisSite);
foreach (TermStore termStore in session.TermStores)
{
foreach (Group group in termStore.Groups)
{
foreach (TermSet termSet in group.TermSets)
{
foreach (Term term in termSet.Terms)
{
AddTermSet(term);
}
}
}
}
}
void AddTermSet(Term term)
{
allItems.Add(term);
foreach (Term t in term.Terms)
AddTermSet(t);
}
现在您已拥有该列表,您可以查询它。希望这会有所帮助。