2016-03-22 10 views
0

Veri kaynağı, Sitecore Ortam Kitaplığı'nda bir klasör olan bir kontrol listesi var. Bu alandaki 'kontrol edilen' öğelerin her biri bu klasördeki bir resmi temsil eder, bu yüzden bu kontrol listesini boruyla ayrılmış görüntü kimlikleri dizisine derlemeyi bekliyorum. Medya Kitaplığı görüntülerini bir görünümde görüntülemek için bu kimlikleri kullanmak mümkün mü? Sitecore 7 MVC ve Razor kullanılarak görüntülerin görüntülenmesi

Bu

benim ViewModel bir örnektir:

public class PageViewModel { 
    public List<string> ImageIDs { get; set; } 
} 

Ve bu benim Razor sözdizimi kod bir örnektir:

@foreach (var imageId in PageViewModel.ImageIDs) { 
    <div class="image-container"> 
     <img src="@Url.Content(MediaManager.GetMediaUrl(imageId.MediaItem))"> 
    </div> 
} 

cevap

0

Ben MediaManager ne emin değilim, ama imageId olduğunu bir dize ve bir dize üzerinde bir uzantı yönteminiz yoksa, yanlış olan bir MediaItem özelliğine erişiyorsunuz.

Kişisel yaklaşım doğru gibi görünüyor, ama API bilmeden, bir tahminde ve olması gerektiğini söyleyebilirim:

<img src="@Url.Content(MediaManager.GetMediaUrl(imageId))"> 

GÜNCELLEME

etrafında kazma biraz mü ve olabildiğince gibi görünüyor bir dize alacağınız ve medyayı alabileceğiniz bir uzantı yöntemi yazın.

bir göz atın: Get media url in View in Sitecore MVC

+0

'GetMediaUrl()' sadece bir parametre olarak bir 'MediaItem' nesnesini kabul ettiğinden, bu işe yaramaz - Ben alıyordu yaklaşım sezgisel ama çılgınca yanlış olduğunu düşünüyorum. – alex

2

Sitecore CheckList yorganın altında bir Multilist olduğunu. Yani böyle davranabilirsin.

public class PageViewModel { 
    public List<string> ImageUrls { get; set; } 
} 

url dizeleri

MultilistField related = Sitecore.Context.Item.Fields["Related Images"]; 

List<string> imageUrls; 

foreach(var item in related.GetItems()) 
{ 
    string hashedUrl = HashingUtils.ProtectAssetUrl(Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(item)); 

    imageUrls.Add(hashedUrl); 
} 

var pageViewModel = new PageViewModel {ImageUrls = imageUrls}; 

görüntüleri düzenlenebilir olmayacaktır

@foreach (var imageUrl in PageViewModel.ImageIDs) { 
    <div class="image-container"> 
     <img src="@imageUrl"> 
    </div> 
} 

Son olarak görünümünüzü içine alan ayrıştırın. Sadece bunları görüntüleyebilirsiniz.

+0

Bunun ile 2 sayı. İlk olarak - sadece görüntü URL'si gereklidir, tüm öğeyi görüntüye geçirmemiz gerekmez, bu nedenle denetleyicideki URL'yi alın. Razorscript'i temizler. İkinci olarak, yeniden boyutlandırma nitelikleri vb. Eklemek istediğinizde görüntü Url'sini 'HashingUtils.ProtectAssetUrl (url)' yöntemiyle çalıştırmalısınız. –

+0

Anlaşıldı ve tamamlandı. –

-1
@model RotatorViewModel 

<h1>Products List</h1> 
@foreach (var item in Model.RotatorItems) 
{ 
    <h2>@Html.Sitecore().Field("Title", item)</h2> 
     @Html.Sitecore().Field("Image", item) 
     @Html.Sitecore().Field("Description", item) 
} 
+3

_why_ açıklamaya değmez, bu kodun OP'nin problemini çözdüğünü hissediyorsunuz. – Bugs

İlgili konular