Share via


NavigationTermSet class

Specifies navigation behavior and properties for a TermSet object that is used to drive the navigation and friendly URLs for a website.

Inheritance hierarchy

System.Object
  Microsoft.SharePoint.Publishing.Navigation.NavigationTermSetItem
    Microsoft.SharePoint.Publishing.Navigation.NavigationTermSet

Namespace:  Microsoft.SharePoint.Publishing.Navigation
Assembly:  Microsoft.SharePoint.Publishing (in Microsoft.SharePoint.Publishing.dll)

Syntax

'Declaration
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public MustInherit Class NavigationTermSet _
    Inherits NavigationTermSetItem
'Usage
Dim instance As NavigationTermSet
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public abstract class NavigationTermSet : NavigationTermSetItem

Remarks

This class adds additional properties and operations that are specific to managed navigation.

The NavigationTermSet object has two modes: an editable mode that acts as a lightweight wrapper for a TermSet object, and an optimized read-only mode that is used to reduce the memory size of the NavigationTermSet objects stored in the taxonomy navigation cache.

Use the GetAsResolvedByWeb method to construct an editable instance. Use the TaxonomyNavigation methods to obtain read-only instances from the taxonomy navigation cache.

Note

The NavigationTermSet class supports multiple views via the GetWithNewView method.

See NavigationTermSetView documentation for more information.

Examples

The following example demonstrates creating a term set.

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Taxonomy;
using Microsoft.SharePoint.Publishing.Navigation;


namespace NavigationDemos
{
    public class Class1
    {
        public static readonly Guid NavTermSetId = new Guid("<GUID>");
        public static readonly Guid TaggingTermSetId = new Guid("<GUID>");
        public const string ServerUrl = "http:// <ServerURL>";



        public void CreateNavigationTermSet()
        {
            using (SPSite site = new SPSite(ServerUrl))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    TaxonomySession taxonomySession = new TaxonomySession(site, updateCache: true);

                    // Use the first TermStore in the list
                    if (taxonomySession.TermStores.Count == 0)
                        throw new InvalidOperationException("The Taxonomy Service is offline or missing");

                    TermStore termStore = taxonomySession.TermStores[0];

                    // Does the TermSet already exist?
                    TermSet existingTermSet = termStore.GetTermSet(NavTermSetId);
                    if (existingTermSet != null)
                    {
                        existingTermSet.Delete();
                        termStore.CommitAll();
                    }

                    // Create a new TermSet
                    Group siteCollectionGroup = termStore.GetSiteCollectionGroup(site);
                    TermSet termSet = siteCollectionGroup.CreateTermSet("Navigation Demo", NavTermSetId);

                    NavigationTermSet navTermSet = NavigationTermSet.GetAsResolvedByWeb(termSet, web,
                        StandardNavigationProviderNames.GlobalNavigationTaxonomyProvider);

                    navTermSet.IsNavigationTermSet = true;
                    navTermSet.TargetUrlForChildTerms.Value = "~site/Pages/Topics/Topic.aspx";

                    NavigationTerm term1 = navTermSet.CreateTerm("Term 1", NavigationLinkType.SimpleLink);
                    term1.SimpleLinkUrl = "https://www.bing.com/";

                    Guid term2Guid = new Guid("87FAA433-4E3E-4500-AA5B-E04330B12ACD");
                    NavigationTerm term2 = navTermSet.CreateTerm("Term 2", NavigationLinkType.FriendlyUrl,
                        term2Guid);

                    // Verify that the NavigationTermSetView is being applied correctly

                    string expectedTargetUrl = web.ServerRelativeUrl
                        + "/Pages/Topics/Topic.aspx?TermStoreId=" + termStore.Id.ToString()
                        + "&TermSetId=" + NavTermSetId.ToString()
                        + "&TermId=" + term2Guid.ToString();

                    NavigationTerm childTerm = term2.CreateTerm("Term 2 child", NavigationLinkType.FriendlyUrl);

                    // Commit the Taxonomy changes
                    childTerm.GetTaxonomyTerm().TermStore.CommitAll();
                }
            }
        }
    }
}

Thread safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See also

Reference

NavigationTermSet members

Microsoft.SharePoint.Publishing.Navigation namespace