“分类操作”示例 SharePoint 外接程序
Core.MMS 示例控制台应用程序展示了如何与 SharePoint Managed Metadata Service 交互以创建和检索术语、术语集和组。 此示例还在提供程序托管的外接程序中运行,例如 ASP.NET MVC Web 应用程序。
如果要在 SharePoint 场之间迁移术语或在自定义外接程序中显示术语,请使用此解决方案。
准备工作
若要开始,请从 GitHub 上的 Office 365 开发人员模式和做法项目下载 Core.MMS 示例外接程序。
注意
本文中的代码按原样提供,不提供任何明示或暗示的担保,包括对特定用途适用性、适销性或不侵权的默示担保。
在运行此外接程序之前,需要:
- SharePoint 网站的 URL。
- 在 Managed Metadata Service 中访问术语库的权限。
下图展示了分配这些权限的 Office 365 管理中心。
分配对术语库的权限:
从 Office 365 管理中心中,选择“术语库”。
在“分类术语库”中,选择你希望向其分配管理员权限的术语集。
在“术语库管理员”中,输入需要术语库管理员权限的组织帐户。
使用 Core.MMS 示例外接程序
启动外接程序时,你将看到类似下图的控制台应用程序。 系统会提示你输入 SharePoint 或 SharePoint Online 网站的 URL 以及你的凭据。
提供 SharePoint URL 和凭据后,会进行用户身份验证。
以下代码在 SharePoint Online 中执行用户身份验证。
ClientContext cc = new ClientContext(siteUrl);
cc.AuthenticationMode = ClientAuthenticationMode.Default;
// For SharePoint Online.
cc.Credentials = new SharePointOnlineCredentials(userName, pwd);
以下代码在专用 SharePoint Online 或本地 SharePoint 场中执行用户身份验证。
ClientContext cc = new ClientContext(siteUrl);
cc.AuthenticationMode = ClientAuthenticationMode.Default;
// For SharePoint Online Dedicated or on-premises .
cc.Credentials = new NetworkCredential(userName, pwd);
CreateNecessaryMMSTermsToCloud 方法在 Managed Metadata Service 中创建一个组、术语集和几个术语。 代码首先获取对 TaxonomySession 对象的引用,然后获取 TermStore 对象的引用,然后再创建自定义 TermGroup、 TermSet 和新术语。
private static void CreateNecessaryMMSTermsToCloud(ClientContext cc)
{
// Get access to taxonomy CSOM.
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(cc);
cc.Load(taxonomySession);
cc.ExecuteQuery();
if (taxonomySession != null)
{
TermStore termStore = taxonomySession.GetDefaultSiteCollectionTermStore();
if (termStore != null)
{
//
// Create group, termset, and terms.
//
TermGroup myGroup = termStore.CreateGroup("Custom", Guid.NewGuid());
TermSet myTermSet = myGroup.CreateTermSet("Colors", Guid.NewGuid(), 1033);
myTermSet.CreateTerm("Red", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Orange", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Yellow", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Green", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Blue", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Purple", 1033, Guid.NewGuid());
cc.ExecuteQuery();
}
}
}
创建新术语后,GetMMSTermsFromCloud() 方法从 Managed Metadata Service 中检索所有术语组、术语集和术语。 类似于 CreateNecessaryMMSTermsToCloud() 方法,在检索和显示术语信息之前,代码依次获取对 TaxonomySession 和 TermStore 对象的引用。
private static void GetMMSTermsFromCloud(ClientContext cc)
{
//
// Load up the taxonomy item names.
//
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(cc);
TermStore termStore = taxonomySession.GetDefaultSiteCollectionTermStore();
cc.Load(termStore,
store => store.Name,
store => store.Groups.Include(
group => group.Name,
group => group.TermSets.Include(
termSet => termSet.Name,
termSet => termSet.Terms.Include(
term => term.Name)
)
)
);
cc.ExecuteQuery();
//
// Writes the taxonomy item names.
//
if (taxonomySession != null)
{
if (termStore != null)
{
foreach (TermGroup group in termStore.Groups)
{
Console.WriteLine("Group " + group.Name);
foreach (TermSet termSet in group.TermSets)
{
Console.WriteLine("TermSet " + termSet.Name);
foreach (Term term in termSet.Terms)
{
// Writes root-level terms only.
Console.WriteLine("Term " + term.Name);
}
}
}
}
}
}
你将看到你的 Managed Metadata Service 中的术语数据显示在控制台应用程序中,如下图所示,并且还会显示在 Managed Metadata Service 中的术语库中,如第二张图中所示。