2016-04-14 14 views
1

Ich habe eine Frage. Ich brauche die Kinder mit der „Aktiv == true“ Eigenschaft von einem benutzerdefinierten Controller und vom .cshtmlFilter mit benutzerdefinierten Eigenschaft - Umbraco

-Controller

public class PollsController : SurfaceController 
{ 
    private List<Theme> ThemeList() 
    { 
     var themePageList = Umbraco.Content(CurrentPage.Id).Children.Where("¿¿¿???"); 
     var themeList = new List<Theme>(); 

     foreach (var currentTheme in themePageList) 
     { 
      themeList.Add(
       new Theme 
       { 
        ID = currentTheme.Id, 
        Title = currentTheme.Name, 
       } 
       ); 
     } 

     return themeList; 
    } 
} 

Und wenn zur Liste nicht auf dem Controller filtern, wie ich die Ansicht filtern?

CSHTML

@model Encuestas.ViewModels.PollViewModel 

@foreach (var currentTheme in Model.Themes.Where("¿¿¿???") 
{ 
    <div> 
     <p> 
      <h1 style="text-align: center">@currentTheme.Title</h1> 
     </p> 
    </div> 
} 

Umbraco Inhalt

Polls 
    Theme 1 
     Question 1 
      Answer 1 
      Answer 2 
      Answer 3 
      Answer 4 
     Question 2 
      Answer 1 
      Answer 2 
      Answer 3 
      Answer 4 
     Question 3 
      Answer 1 
      Answer 2 
      Answer 3 
      Answer 4 
    Theme 2 ==> Active == false 
     Question 1 
      Answer 1 
      Answer 2 
      Answer 3 
      Answer 4 
     Question 2 
      Answer 1 
      Answer 2 
      Answer 3 
      Answer 4 
     Question 3 
      Answer 1 
      Answer 2 
      Answer 3 
      Answer 4 

Thx !!!

EDIT

public ActionResult RenderPoll() 
{ 

    var viewModel = new PollViewModel 
    { 
     Themes = ThemeList() 
    }; 

    return PartialView("~/Views/Partials/_Polls.cshtml", viewModel); 

} 

Antwort

1

Ändern dieser Zeile:

var themePageList = Umbraco.Content(CurrentPage.Id).Children.Where("¿¿¿???"); 

zu

var themePageList = Umbraco.TypedContent(CurrentPage.Id).Children.Where(x => x.GetPropertyValue<bool>("active")); 

Umbraco.Content() ist ein dynamischer während Umbraco.TypedContent() ist der Typ IP publishedContent.

Sie müssen nicht in Ihrer Rasierklingen-Datei filtern.

+0

Ja, das ist die Lösung , fügen Sie einfach Umbraco.Web und System.Linq hinzu; – avechuche

0
@model Encuestas.ViewModels.PollViewModel 

@foreach (var currentTheme in Model.Themes(p => p.Active==true)) 
{ 
    <div> 
     <p> 
      <h1 style="text-align: center">@currentTheme.Title</h1> 
     </p> 
    </div> 
} 
+0

No :(Ich habe „.Children“ nicht-Methode (? – avechuche

+0

Ich war die Annahme, Kinder waren ein Enumerable. Welche ist Kinder. – Wjdavis5

+0

‚Themen‘ ist eine Liste im Modell (PollViewModel). Siehe den Controller in der Post – avechuche

Verwandte Themen