“分类操作”示例 SharePoint 外接程序

Core.MMS 示例控制台应用程序展示了如何与 SharePoint Managed Metadata Service 交互以创建和检索术语、术语集和组。 此示例还在提供程序托管的外接程序中运行,例如 ASP.NET MVC Web 应用程序。

如果要在 SharePoint 场之间迁移术语或在自定义外接程序中显示术语,请使用此解决方案。

准备工作

若要开始,请从 GitHub 上的 Office 365 开发人员模式和做法项目下载 Core.MMS 示例外接程序。

注意

本文中的代码按原样提供,不提供任何明示或暗示的担保,包括对特定用途适用性、适销性或不侵权的默示担保。

在运行此外接程序之前,需要:

  • SharePoint 网站的 URL。
  • 在 Managed Metadata Service 中访问术语库的权限。

下图展示了分配这些权限的 Office 365 管理中心。

SharePoint 管理中心的屏幕截图,其中突出显示了术语库、分类术语库搜索框和术语库管理员框。

分配对术语库的权限:

  1. 从 Office 365 管理中心中,选择“术语库”。

  2. 在“分类术语库”中,选择你希望向其分配管理员权限的术语集。

  3. 在“术语库管理员”中,输入需要术语库管理员权限的组织帐户。

使用 Core.MMS 示例外接程序

启动外接程序时,你将看到类似下图的控制台应用程序。 系统会提示你输入 SharePoint 或 SharePoint Online 网站的 URL 以及你的凭据。

提示输入 SharePoint 用户名和密码的 Core.MMS 示例外接程序控制台的屏幕截图。

提供 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 对象的引用,然后再创建自定义 TermGroupTermSet 和新术语。

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() 方法,在检索和显示术语信息之前,代码依次获取对 TaxonomySessionTermStore 对象的引用。

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 中的术语库中,如第二张图中所示。

带术语数据输出的控制台应用程序的屏幕截图。


分类术语库已展开的 SharePoint 管理中心的屏幕截图。

另请参阅