2014-07-25 8 views
9

Ok bin zu Umbraco/C# sehr neu und was ich versuche, ist Schleife durch einen kundenspezifischen Medientyp, um Fahnen für die Homepage meiner Anwendung und @bannerUrl zu bauen gibt immer die Bildeigenschaften-ID und nicht den Dateipfad an die Ressource zurück. Wie würden Sie den Bilddateipfad von einem benutzerdefinierten Medientyp abrufen, der in Umbraco erstellt wurde?Umbraco wie man Bildeigenschaft Identifikation benutzt, um URL zu erhalten

Siehe Code zum Beispiel:

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> 

} 

Die Variablen bannerUrl immer wieder die Bild-ID standardmäßig und nicht der Dateipfad für die URL. Wie kann ich den Dateipfad zum Laufen bringen? Wenn im Debugger in VS, den Inhalt des Banners Objekts Inspektion I Ankündigung der Url-Eigenschaft hat den folgenden Fehler:

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

Sie würden von obwohl ich etwas entlang der Linien .url verwenden könnte, aber dass Dosis scheint nicht zu funktionieren, also irgendwelche Vorschläge, wie ich gehen würde, um die URL die Bildeigenschaft in Umbraco zu erhalten, die den dynamischen Weg benutzt.

Danke.

Antwort

15

solutioin wenn jemand stolpert dies geschieht:

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

gestolpert und verwendet. Vielen Dank für die unkomplizierte Lösung. –

+0

Sie möchten dies nicht verwenden. Dies greift auf die Datenbank zu und verlangsamt die Seitenladezeit. Verwenden Sie den unten angegebenen UmbracoHelper. – Base33

6

Um die gleiche innerhalb einer MVC-Controller/API Contoller zu tun, wenn Sie die „Medien-ID“ haben, können Sie auch die UmbracoHelper verwenden.

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

Es ist viel besser, heute stark typisierte Modelle in Umbraco zu verwenden:

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