2016-09-07 13 views
5

Chcę zastosować, gdy stan na Umbraco Collection.Jak stosować Gdzie stan na Umbraco Collection

Kod:

var workList = CurrentPage.work.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); 
var workCollection = Umbraco.Content(workList); 
@foreach (var item in workCollection.Where("productImage!=\"\"").Skip((i - 1) * iterationCount).Take(iterationCount)) 

Ale zawsze uzyskać dane bez filtra.
ProductImage są media kompletacji enter image description here enter image description here

Odpowiedz

1

Jeśli chcesz trzymać się dynamicznego obiektu, ty powinien spróbować:

var workList = CurrentPage.work.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); 
var workCollection = Umbraco.Content(workList); 
@foreach (var item in workCollection.Where("productImage != null && productImage != string.Empty").Skip((i - 1) * iterationCount).Take(iterationCount)) { ... } 

Osobiście wolę radzić sobie z obiektami silnie typowanymi, więc Rozwiązanie może być:

var workList = CurrentPage.work.ToString().Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); 
var workCollection = Umbraco.TypedContent(workList); 
@foreach (IPublishedContent item in workCollection.Where(x => x.HasValue("productImage")).Skip((i - 1) * iterationCount).Take(iterationCount)) { ... } 

Aby uzyskać więcej informacji, sprawdź: https://our.umbraco.org/documentation/reference/templating/mvc/querying.

Można również sprawdzić pakiet nazywa Umbraco Kluczowe Własności Wartość Konwertery: https://our.umbraco.org/projects/developer-tools/umbraco-core-property-value-converters/ który jest automatycznie pewne wartości konwersji typów danych w łatwo dostępne obiekty/list itd. Np Wartość selektora mediów jest zwracana jako model IPublishedContent i można uzyskać dostęp do jej właściwości bezpośrednio od zwróconej wartości.

+0

Chociaż nie udało mi się znaleźć dokładnego rozwiązania, myślę, że obie koncepcje są poprawne. –

+0

Cieszę się, że to działa! –

1

Więc myślę, że to, co chcesz zrobić, to elementy z workcollection które mają wypełniony właściwość projectImage?

Ja osobiście lubię robić to za pomocą wyrażenia lambda, w danym przypadku byłoby coś takiego

workCollection.Where(x => x.HasValue("productImage")) 

zamiast

workCollection.Where("productImage!=\"\"") 
+0

Mam nawet tendencję do pójścia dalej, a także: workCollection.Where (x => x.HasProperty ("productImage") && x.HasValue ("productImage")), aby mieć pewność, że czasami, jeśli właśnie dodałeś nowa właściwość może nie być dostępna, dopóki indeksy nie zostaną odbudowane, bardziej jak pas i podejście klamrowe. –

+0

Błąd: Nie można użyć wyrażenia lambda jako argumentu dla operacji dynamicznie wywoływanej bez uprzedniego przekazania go do delegata lub drzewa wyrażeń typu: –

+0

Wypróbuj Umbraco.TypedContent zamiast Umbraco.Content – Mark