NavigationTerm.GetWebRelativeFriendlyUrl() renvoie la valeur en utilisant SSOM, mais renvoie NULL en utilisant CSOM

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/109881

Question

J'utilise la navigation par métadonnées gérées et j'essaie d'y accéder à l'aide de CSOM.Le problème que j'ai est que je ne parviens pas à obtenir les URL conviviales pour les termes.

Si j'exécute ce code à l'aide du modèle d'objet côté serveur, l'appel à NavigationTerm.GetWebRelativeFriendlyUrl() renvoie l'URL Web relative-friendly comme prévu.

using (SPSite site = new SPSite("http://sp2013"))
{
    SPWeb web = site.RootWeb;

    NavigationTermSet navigationTermSet = TaxonomyNavigation.GetTermSetForWeb(web, "GlobalNavigationTaxonomyProvider", true);

    foreach (NavigationTerm term in navigationTermSet.Terms)
    {
        Console.WriteLine(term.TaxonomyName + " - " + term.GetWebRelativeFriendlyUrl());

        foreach (NavigationTerm childTerm in term.Terms)
        {
            Console.WriteLine(" -- " + childTerm.TaxonomyName + " - " + childTerm.GetWebRelativeFriendlyUrl());
        }
    }
}

Si j'exécute ce code à l'aide du modèle objet du site client, l'appel à NavigationTerm.GetWebRelativeFriendlyUrl() renvoie NULL.

using (ClientContext clientContext = new ClientContext("http://sp2013"))
{
    NavigationTermSet navigationTermSet = TaxonomyNavigation.GetTermSetForWeb(clientContext, clientContext.Web, "GlobalNavigationTaxonomyProvider", true);

    clientContext.Load(navigationTermSet, x => x.Terms);
    clientContext.ExecuteQuery();

    foreach (NavigationTerm term in navigationTermSet.Terms)
    {
        clientContext.Load(term, x => x.Terms);
        clientContext.ExecuteQuery();

        Console.WriteLine(term.TaxonomyName + " - " + term.GetWebRelativeFriendlyUrl().Value);

        foreach (NavigationTerm childTerm in term.Terms)
        {
            clientContext.Load(childTerm, x => x.Terms);
            clientContext.ExecuteQuery();

            Console.WriteLine(" --- " + childTerm.TaxonomyName + " - " + childTerm.GetWebRelativeFriendlyUrl().Value);
        }
    }
}

Avez-vous une idée de ce qui ne va pas avec le code CSOM ou de la façon dont je peux obtenir les URL conviviales pour les termes ?

Était-ce utile?

La solution

Assurez-vous de lancer cet appel GetWebRelativeFriendlyUrl comme ci-dessous :

var friendlyUrl = term.GetWebRelativeFriendlyUrl();

Avant votre appel au :

clientContext.ExecuteQuery();

Utilisez ensuite le friendlyUrl dans votre sortie :

Console.WriteLine(" --- " + childTerm.TaxonomyName + " - " + friendlyUrl);

Petite remarque complémentaire :La méthode GetWebRelativeFriendlyUrl renvoie un type ClientResult<T>.Pour que la variable soit renseignée, vous devez appeler ctx.ExecuteQuery() après la déclaration.(où ctx est le ClientContext établi.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top