2016-06-15 1 views
0

J'ai un lien de structure ci-dessousUmbraco - Seulement obtenir des éléments enfants d'un type de document

PageOne

  • Colonnes

    - ColumnItem-One

    - ColumnItems-Deux

    - ColumnItems-Three

    - ColumnItems-quatre

PageTwo

  • Colonnes

    - ColumnItems-OneB

    - ColumnItems-TwoB

J'ai une vue partielle que je veux afficher chacun des éléments Colonne enfants mais pour le moment j'utilise des descendants qui retourne tous les 6 éléments au lieu de 4 sur PageOne et 2 sur PageTwo.

Mon code est

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 
@{ 
    var root = Model.Content; 
    var tiles = root.Descendants("tiles"); 



    if(tiles.Count() > 0) 
    { 
     <div class="row tile-row"> 
      @foreach(var node in tiles) 
      { 
       <div class="col-md-3"> 
        <div class="tile"> 
         <h3>@(node.GetPropertyValue("tileTitle"))</h3> 
         @(node.GetPropertyValue("tileBodyText"))<br/> 
         <a class="btn btn-more" href="@(node.GetPropertyValue("tileButtonLink"))">@(node.GetPropertyValue("tileButtonText"))</a> 
        </div> 
       </div> 
      } 
     </div><!--/.row--> 
    } 
} 

Si je change descendants aux enfants() je reçois une page d'erreur.

thansk

Répondre

2

Si vous appelez la vue partielle de votre PageOne ou de votre PageTwo, vous pouvez faire ce qui suit si vous utilisez l'objet fortement typé:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 
@{ 
    // Get this PageOne or PageTwo object 
    var page = Model.Content; 

    // Get the column node that is descendant of this page 
    var column = root.Descendants("columnAlias"); 

    // Get all children of the column node that are published 
    var childs = column.Children.Where(x => x.IsVisible()); 

    if(childs.Count() > 0) 
    { 
     <div class="row tile-row"> 
      @foreach(var node in childs) 
      { 
       <div class="col-md-3"> 
        <div class="tile"> 
         <h3>@(node.GetPropertyValue("tileTitle"))</h3> 
         @(node.GetPropertyValue("tileBodyText"))<br/> 
         <a class="btn btn-more" href="@(node.GetPropertyValue("tileButtonLink"))">@(node.GetPropertyValue("tileButtonText"))</a> 
        </div> 
       </div> 
      } 
     </div><!--/.row--> 
    } 
} 
+0

Merci pour ce mivaweb i fini pour atteindre cela en utilisant - var columns = CurrentPage.FirstChild ("columns"). Children ("columnItem"). Où ("Visible"); – KlydeMonroe