2014-02-06 11 views
6

Ich bin neu in MVC C#.C# Bestellung von in foreach

Hier ist ein fertiger und funktionierender Code (der Teil des Arbeitscodes).

Das Problem ist die Beschreibung wird nicht auf der Seite in der richtigen Reihenfolge angezeigt. So sollte die Reihenfolge von <div> s etwas anders sein.

Wie ändert man den Code so, dass er richtig funktioniert?

Die Reihenfolge des Felds Description sollte von Order Spalte bestellt werden.

+2

Können Sie nicht Bestellen Sie es einfach in Ihrem Controller, bevor Sie es auf die Seite senden? –

Antwort

16

Verwenden OrderBy Erweiterungsmethode auf IEnumerable in System.Linq Namespace

@foreach (var item in Model.OrderBy(i => i.Order)) 
{    
    <div style="height: 200px; "> 
     @Html.Raw(@item.Description) 
    </div> 
} 
+2

Vergessen Sie nicht, '' add namespace = "System.Data.Linq" /> 'zu Ihrer web.config hinzuzufügen. – Max

+3

Das würde funktionieren, aber im Allgemeinen mit MVC ist die Rolle der Ansicht nur Daten anzuzeigen. IMO die Logik hinter der Reihenfolge der anzuzeigenden Elemente sollte von der Steuerung behandelt werden. (Sie würden das '.OrderBy 'dort tun.) –

+0

Dank @Guillaume –

4

Sie können das Linq SortiertNach Erweiterungsmethode

@foreach (var item in Model.OrderBy(i => i.Order)) 
{ 
} 
+0

Du hast mich dazu geschlagen;) – sander

+1

Guillaume war zu schnell! ;-) – Liath

2

Direkt verwenden orderby

@foreach (var item in Model.OrderBy(i => i.Order)) 
{    
    <div style="height: 200px; "> 
     @Html.Raw(@item.Description) 
    </div> 
}