2016-07-29 3 views
1

Je l'emportaient sur le modèle Zone-AsideSecond comme tant d'ajouter des cours à la balise:Comment gérer l'ordre correct des widgets dans un modèle de zone remplacé?

@{ 
    Model.Id = "zone-aside-second"; 
    var tag = Tag(Model, "section"); 
    tag.Attributes.Add("data-spy", "affix"); 
    tag.Attributes.Add("data-offset-top", "300"); 
} 
@tag.StartElement 
@DisplayChildren(Model) 
@tag.EndElement 

Mais maintenant, les widgets dans la zone ne respectent pas plus leur position et sont simplement rendus dans l'ordre dans lequel ils ont été créés . J'ai essayé de le fixer comme ceci:

Model.Items = ((IEnumerable<dynamic>)Model.Items).OrderBy(c => Int32.Parse(c.ContentItem.WidgetPart.Position)); 

Mais cela n'a pas semblé faire la différence.

Répondre

5

Orchard a une méthode pour commander des widgets de la bonne façon, vous pouvez l'utiliser comme suit:

@foreach (var item in Orchard.Core.Shapes.CoreShapes.Order(Model)) { 
    @Display(item) 
} 
+1

Merci, cela a fait l'affaire. Sauf que je devais écrire '@Display (item)' pour le faire fonctionner pour une raison quelconque. – Lawyerson

+0

J'ai mis à jour la réponse pour refléter votre commentaire, merci – mdameer