2014-07-25 12 views
9

Ok là rất mới với Umbraco/C# và những gì tôi đang cố gắng làm là lặp qua một loại phương tiện tùy chỉnh để xây dựng biểu ngữ cho trang chủ của ứng dụng của tôi và @bannerUrl luôn trả về id thuộc tính hình ảnh chứ không phải đường dẫn tệp đến tài nguyên. Làm thế nào bạn sẽ đi về lấy đường dẫn tập tin hình ảnh từ một loại phương tiện truyền thông tùy chỉnh được tạo ra trong Umbraco.Umbraco cách sử dụng id thuộc tính hình ảnh để lấy URL

Xem mã cho ví dụ:

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> 

} 

Biến bannerUrl luôn trả về id hình ảnh theo mặc định và không phải là đường dẫn tập tin cho URL. Làm thế nào tôi có thể nhận được đường dẫn tập tin làm việc? Khi kiểm tra các nội dung của đối tượng biểu ngữ trong trình gỡ lỗi trong VS tôi thông báo về việc sở hữu Url có các lỗi sau:

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

Bạn sẽ của mặc dù tôi có thể sử dụng một cái gì đó dọc theo dòng .Url nhưng liều mà không có vẻ làm việc, vì vậy bất kỳ đề xuất làm thế nào tôi sẽ đi về nhận được URL các tài sản hình ảnh trong Umbraco sử dụng cách năng động.

Cảm ơn.

Trả lời

15

Solutioin nếu có ai tình cờ tình cờ khi này:

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

stumbled khi và sử dụng. Rất cám ơn vì giải pháp đơn giản. –

+0

Bạn không muốn sử dụng tính năng này. Điều này truy cập cơ sở dữ liệu và làm chậm thời gian tải trang. Sử dụng UmbracoHelper, được chỉ định bên dưới. – Base33

6

Để làm như vậy trong vòng một MVC điều khiển/API Contoller một khi bạn có "phương tiện truyền thông ID", bạn cũng có thể sử dụng 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

Đó là tốt hơn để sử dụng mô hình mạnh mẽ gõ trong Umbraco ngày nay:

var bannerMediaItem = Umbraco.TypedMedia(banner.image); //banner.image is the property id. 
var bannerUrl = bannerMediaItem.Url; 
Các vấn đề liên quan