Navigationsbegriff.GetWebRelativeFriendlyUrl () gibt den Wert mit SSOM zurück, gibt jedoch mit CSOM NULL zurück

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

Frage

Ich verwende die verwaltete Metadatennavigation und versuche, mit CSOM darauf zuzugreifen.Das Problem, das ich habe, ist, dass ich die freundlichen URLs für die Begriffe nicht bekommen kann.

Wenn ich diesen Code mit dem serverseitigen Objektmodell ausführe, erfolgt der Aufruf von NavigationTerm.GetWebRelativeFriendlyUrl () gibt die relativ freundliche Web-URL wie erwartet zurück.

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());
        }
    }
}

Wenn ich diesen Code mit dem Client-Site-Objektmodell ausführe, erfolgt der Aufruf von NavigationTerm.GetWebRelativeFriendlyUrl() gibt NULL zurück.

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);
        }
    }
}

Irgendwelche Ideen, was mit dem CSOM-Code nicht stimmt oder wie ich die freundlichen URLs für die Begriffe erhalten kann?

War es hilfreich?

Lösung

Stellen Sie sicher, dass Sie diesen Aufruf ausführen GetWebRelativeFriendlyUrl wie unten:

var friendlyUrl = term.GetWebRelativeFriendlyUrl();

Vor Ihrem Anruf an:

clientContext.ExecuteQuery();

Verwenden Sie dann die friendlyUrl in Ihrer Ausgabe:

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

Kleine Randnotiz:Methode GetWebRelativeFriendlyUrl gibt einen Typ zurück ClientResult<T>.Damit die Variable gefüllt werden kann, müssen Sie Folgendes aufrufen ctx.ExecuteQuery() nach der Erklärung.(wobei ctx der etablierte ClientContext ist.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top