Ich habe ein EF-Modell wie folgt:
Bei diesem Modell kann ich offensichtlich Categories.Products
verwenden, um eine Liste von Produkten zu erhalten.
Ich habe eine Abfrage wie folgt, um eine Liste von Kategorien zurückzugeben, wobei Produkte als Liste in einer ASP.NET MVC 3-Ansicht verwendet werden:
%Vor%Um die Produkte in der Reihenfolge ihrer SortOrder anzuzeigen, muss ich Folgendes tun:
%Vor% Die beleidigende Zeile lautet: @foreach (var product in category.Products.OrderBy(a => a.SortOrder))
, da dies einen Teil meines Modells in der Ansicht behandelt.
Gibt es eine Möglichkeit, dies in der Abfrage zu sortieren?
Gibt es eine Möglichkeit, dies in der Abfrage zu sortieren?
Sehen Sie natürlich Modelle an:
%Vor%und in Ihrer Controller-Aktion machen Sie das notwendige, um dieses View-Modell zu füllen:
%Vor% und in der Index.cshtml
-Ansicht können Sie hässliche Schleifen loswerden und Anzeigevorlagen verwenden:
und innerhalb der Anzeigevorlage für eine Kategorie ( ~/Views/Shared/CategoryViewModel.cshtml
)
und innerhalb der Anzeigevorlage für ein Produkt ( ~/Views/Shared/ProductViewModel.cshtml
)
Als weitere Verbesserung der Controller-Aktion können Sie AutoMapper verwenden, um zwischen Ihren Domänenmodellen (EF-Objekten) und Ihren Ansichtsmodellen zu mappen welches zu einer Ansicht übergeben werden sollte.
Tags und Links asp.net-mvc-3 c# entity-framework razor linq