2014-07-25 8 views
9

Ok sono molto nuovo per Umbraco/C# e quello che sto cercando di fare è passare attraverso un tipo di media personalizzato per costruire banner per la pagina iniziale della mia applicazione e @bannerUrl restituisce sempre l'ID della proprietà delle immagini e non il percorso del file alla risorsa. Come procedere nel recupero del percorso del file immagine da un tipo di supporto personalizzato creato in Umbraco.Umbraco come usare l'id della proprietà dell'immagine per ottenere l'URL

vedi codice per esempio:

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> 

} 

La variabile bannerUrl restituisce sempre l'id immagine di default e non il percorso del file per l'URL. Come posso far funzionare il percorso del file? Ispezionando il contenuto dell'oggetto striscione nel debugger in VS I avviso di proprietà URL ha il seguente errore:

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

si farebbe di se potrei usare qualcosa lungo le linee .url ma quella dose non sembrano lavoro, quindi qualsiasi suggerimento su come ottenere l'URL della proprietà dell'immagine in Umbraco usando la modalità Dinamica.

Grazie.

risposta

15

solutioin se qualcuno capita di inciampare su questo:

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

imbattuto su e utilizzati. Molte grazie per la soluzione semplice. –

+0

Non si vuole usare questo. Questo accede al database e rallenta il tempo di caricamento della pagina. Usa UmbracoHelper, specificato di seguito. – Base33

6

Per fare la stessa all'interno di un controller/API Contoller MVC volta che hai la "media ID" è anche possibile utilizzare l'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

E 'molto meglio utilizzare modelli fortemente tipizzati in Umbraco al giorno d'oggi:

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