2014-07-25 19 views
9

OK, jestem bardzo nowy w Umbraco/C# i próbuję wykonać pętlę przez niestandardowy typ mediów, aby utworzyć banery na stronie głównej aplikacji i @bannerUrl zawsze zwraca identyfikator właściwości images, a nie ścieżkę pliku do zasobu. W jaki sposób chciałbyś pobrać ścieżkę do pliku obrazu z niestandardowego typu multimediów utworzonego w Umbraco.Umbraco, jak używać identyfikatora właściwości obrazu, aby uzyskać adres URL

kod widoczny na przykład:

var mediaFolder = Umbraco.Media(mediaFolderId); 
var banners = mediaFolder.Children(); 

foreach (var banner in banners) 
    { 
    var bannerUrl = banner.image; 

     <div style="background-image:url(@bannerUrl);"></div> 

} 

Zmienna bannerUrl zawsze zwraca identyfikator obrazu domyślnie i nie ścieżka do pliku na adres URL. Jak mogę uzyskać dostęp do ścieżki pliku? Podczas sprawdzania zawartości obiektu Banner w debugger VS I zawiadomienie o właściwość url ma następujący błąd:

Url = 'banner.Url' threw an exception of type 'System.NotSupportedException' 

będzie wam chociaż mógłbym użyć coś wzdłuż linii .Url ale dawka nie wydaje się pracować, więc wszelkie sugestie, w jaki sposób chciałbym uzyskać adres URL właściwości obrazu w Umbraco w sposób dynamiczny.

Dzięki.

Odpowiedz

15

Solutioin jeśli ktoś dzieje się potyka na to:

var bannerId = Umbraco.Media(banner.image); //banner.image is the property id. 
var bannerUrl = bannerId.Url; 
+0

Natknęliśmy i używane. Wielkie dzięki za proste rozwiązanie. –

+0

Nie chcesz tego używać. Dostęp do bazy danych i spowalnia czas wczytywania strony. Użyj UmbracoHelper, określonego poniżej. – Base33

6

Aby zrobić to samo w ramach MVC kontroler/API Contoller raz masz "Media ID" można również użyć UmbracoHelper.

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current); 
var image = umbracoHelper.Media(mediaID);  // mediaID = the (int)ID of the media 
var imageURL = image.url;      // imageURL now has the site root relative path of the media item 
2

To znacznie lepiej użyć silnie typami modeli w Umbraco dziś:

var bannerMediaItem = Umbraco.TypedMedia(banner.image); //banner.image is the property id. 
var bannerUrl = bannerMediaItem.Url;