In diversen Projekten läuft mir Code über den Weg, in dem der Entwickler Urls in SharePoint händisch mit Hilfe von String-Operationen zusammensetzt oder auseinanderschneidet. Dies ist sicher nicht falsch, aber fehleranfällig und es geht einfacher.

Die SharePoint API bietet und zu diesem Zweck zwei wunderbare Methoden, die ich hier kurz vorstellen möchte.

Relative Urls zu absoluten erweitern

Zu diesem Zweck wird uns die Methode SPUtility.GetFullUrl zur Verfügung gestellt. Mit Ihrer Hilfe kann man z.B. die komplette Url zu einem ListItem zusammensetzen lassen aus der relativen Url des ListItems und der absoluten Url der Site Collection:

SPUtility.GetFullUrl(SPContext.Current.Site, listItem.Url);

 

Urls zusammensetzen

Um mehrere Teile einer Url zusammenzusetzen, kann die Methode SPUrlUtility.CombineUrl verwendet werden. Der Vorteil ist, dass man sich dabei keine Gedanken und die Hinzufügung von Slashes (“/”) machen muss.

SPUrlUtility.CombineUrl(SPContext.Current.Web.Url, "_layouts/anyapplicationpage.aspx");

Alternativ kann auch die Funktion SPUtility.ConcatUrls verwendet werden.

 

Teile einer Url herausbekommen

Die eine oder andere Anforderung macht es auch nötig, dass man bestimmte Teile einer Url herausfindet. So ist es z.B. möglich, dass man den Dateinamen einer Url mit der Methode SPUtility.GetUrlFileName aus der gesamten Url extrahieren kann:

SPUtility.GetUrlFileName("http://site/documentlibrary/folder/filename.txt");

Das Ergebnis dieses Aufrufs wäre also “filename.txt”.

 

Alternativ kann man mit der Methode SPUtility.GetUrlDirectory den Ordner aus der Url extrahieren. In diesem Fall würde der Aufruf des Codes

SPUtility.GetUrlDirectory("http://site/documentlibrary/folder/filename.txt");

das Ergebnis “http://site/documentlibrary/folder” zurückliefern.

1 Comments

  1. Pingback: Aus der Praxis – Arbeiten mit Urls in SharePoint Code - SharePoint Blogs in German - Bamboo Nation

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.