Sollte die Sortierlogik im Modell, in der Ansicht oder in der Steuerung platziert werden? [geschlossen]

157

Ich habe eine Dropdown-Liste, die dem Endbenutzer Werte aus einer Tabelle anzeigt. Ich möchte, dass diese Werte alphabetisch sortiert werden.

Auf welcher Ebene sollte ich gemäß dem richtigen MVC-Design meine Sortierlogik platzieren: das Modell, die Ansicht oder den Controller?

BEARBEITEN : Als Antwort auf LarsHs Frage "Meinst du Code, der bestimmt, welche Sortierreihenfolge gewünscht wird? Oder Code, der die Sortierung ausführt?", Bezog ich mich ursprünglich auf den Code, der bestimmt, welche Sortierreihenfolge gewünscht wird.

Ryan Kohn
quelle
6
Um Meinungsverschiedenheiten in Kommentaren zu lösen, wäre es hilfreich, wenn Sie sagen, was Sie unter "Sortierlogik" verstehen. Meinen Sie Code, der bestimmt, welche Sortierreihenfolge gewünscht wird? oder Code, der die Sortierung durchführt?
LarsH
9
Das MVC-Design ist nichts Besonderes oder Magisches - es ist wirklich nur ein Ausgangspunkt. Passen Sie es an Ihre Bedürfnisse an und denken Sie daran, dass Sie es jederzeit umgestalten können. Ich habe festgestellt, dass verschiedene Anbieter die Eingaben in den Controller oder die Ansicht basierend auf den Anforderungen ihres Toolkits neu definieren, sodass es schwierig ist, eine Einigung zu erzielen. Wichtig ist, dass Sie Ihr Modell von Ihrer Ansicht / Ihrem Controller trennen. Das MVP-Muster könnte auch mehr Kilometer bringen. Ich glaube, es ist in genau diesem Bereich etwas spezifischer.
Bill K
9
Möglicherweise sollte dies zu Programmierern migriert werden.
Alfredo Osorio
57
Auf jeden Fall in der Steuerung. Entweder das oder das Modell. Oder die Aussicht.
Mob
2
Auf jeden Fall niemals, niemals, niemals, niemals in der Aussicht.
Kontaktmatt

Antworten:

49

(Hinweis: Dieses Zitat und Zitat stammt aus der Antwort von @ dasblinkenlight , aber wir sind uns nicht einig über unsere Interpretation. Lesen Sie seinen Beitrag und entscheiden Sie sich selbst).

Nach MVC Beschreibung ,

Ein Controller kann Befehle an die zugehörige Ansicht senden, um die Darstellung des Modells in der Ansicht zu ändern (z. B. durch Scrollen durch ein Dokument). Es kann Befehle an das Modell senden, um den Status des Modells zu aktualisieren (z. B. Bearbeiten eines Dokuments).

Die Sortierlogik (z. B. der Sortierkomparator / Sortieralgorithmus) gehört zum Modell, da sie Geschäftsregeln und Statusdaten enthält. Da das Ändern der Art und Weise, wie die Modelldaten sortiert werden, direkt in die Kategorie "Darstellung des Modells in der Ansicht ändern" fällt, ist der Controller für das "Sortieren" verantwortlich, indem er die model.changeSortedState () -Methode aufruft.

KyleM
quelle
8
Was ist, wenn dieselben Daten in zwei verschiedenen Ansichten angezeigt werden sollen, die unterschiedlich sortiert sind?
s4y
Dies sollte auch auf die gleiche Weise erfolgen: model.SortAscending () und model.SortDescending () und vom Controller aufgerufen werden.
Brij
1
@Brij Können zwei Ansichten in der richtigen MVC nicht dasselbe Modell verwenden?
KOVIKO
@Sidnicious Wenn es sinnvoll ist, eine Sortiermethode zu haben, die einen anderen Parameter verwendet. ZB public void Sort(bool sortByDescending = false)wo, wenn es falsch ist, sortiert es durch Aufsteigen. Oder haben Sie einfach zwei verschiedene Sortiermethoden, wenn die Logik sehr unterschiedlich ist.
MattMcGowan
@Sidnicious hat zwei verschiedene Modelle, die alles außer der Sortierlogik an ein einziges drittes Modell delegieren. docs.google.com/drawings/d/…
rechtsfalten
62

Wer kontrolliert die Sortierreihenfolge?

Einfaches MVC-Diagramm(Aus Wikipedia )

1) Natürliche Ordnung innerhalb der Daten selbst:

Die Bestellung ist Teil des Modells, daher sollte sie dorthin gehen. Ein roher Abzug von "allen Daten" würde die Daten in der sortierten Reihenfolge zurückgeben, und es gibt keine Schnittstelle zur Auswahl der Sortierreihenfolge.

2) Der Benutzer sollte steuern, wie er die Daten sieht:

Die Ansicht bietet eine Schnittstelle (z. B. aufsteigende / absteigende Pfeile), die mit dem Controller interagiert, und das Modell versteht die Daten gut genug, um die angeforderte Sortierung der Daten durchzuführen. Im Gegensatz zu (1) muss ein Rohzug der Daten jedoch nicht unbedingt sortiert werden.

In beiden Fällen,

Die Ansicht versteht nicht, dass eine Sortierung stattfindet, außer der Fähigkeit, anzuzeigen, welche Sortierrichtung gewählt wurde. Setzen Sie die Logik nicht dort.

Kleine Einschränkung

Die Sortierfunktion könnte unter einem Umstand (den ich mir spontan vorstellen kann; es kann mehr geben) nur in der Ansicht enthalten sein:

Eine "dumme" Sortierung, bei der alle Daten bereits in der Ansicht enthalten sind und für die Sortierung kein Domänenwissen erforderlich ist. Zum Beispiel ein sehr einfacher String- oder Zahlenvergleich. Dies ist beispielsweise bei Suchergebnissen auf einer Webseite nicht möglich, wenn die Ergebnisse wahrscheinlich auf mehrere Seiten verteilt sind.

Izkata
quelle
58
Die Ansicht kann den Benutzer sehen!?
Farzher
41
Das Modell aktualisiert die Ansicht!?
Täuschung
13
Dieser Wikipedia-Artikel ist scheiße: Der Abschnitt "Komponenteninteraktion" widerspricht dem rechts gezeigten Diagramm (das Sie gerade hier gepostet haben). Zweitens "aktualisiert" das Modell die Ansicht nicht. Es benachrichtigt die Ansicht, wenn eine Statusänderung stattgefunden hat. Die Ansicht entscheidet, wie aktualisiert werden soll. Pfui. Sie fragen sich, warum es 1000 verschiedene Antworten auf diese Frage gibt, wenn so viele unklare Informationen im Umlauf sind.
KyleM
4
@cHao Sicher. Wir können uns einig sein, dass das Wikipedia-Diagramm ziemlich seltsam ist, oder? :)
täuschen
6
@StephenSarcsamKamenar und alle anderen: Nein, das Bild macht vollkommen Sinn: Es zeigt den Datenfluss , nicht die Codeverbindungen.
Izkata
18

Nach MVC Beschreibung ,

Ein Controller kann Befehle an die zugehörige Ansicht senden, um die Darstellung des Modells in der Ansicht zu ändern (z. B. durch Scrollen durch ein Dokument). Es kann Befehle an das Modell senden, um den Status des Modells zu aktualisieren (z. B. Bearbeiten eines Dokuments).

Demnach gehört die Sortierlogik in die Steuerung, da das Ändern der Art und Weise, wie die Modelldaten sortiert werden, direkt in die Kategorie "Darstellung des Modells in der Ansicht ändern" fällt.

BEARBEITEN: Um mehrere in den Kommentaren geäußerte Missverständnisse zu klären, ist die "Sortierlogik" nicht der Code, der die Sortierung durchführt. Es ist der Code, der die Sortierung definiert . Die Sortierlogik vergleicht einzelne Elemente miteinander, um eine Reihenfolge festzulegen (z. B. durch eine Instanz von IComparator<T>), oder enthält eine Logik, die ein Objekt erstellt, das von einem externen System (z. B. durch eine Instanz von IOrderedQueryable<T>) zum Bestellen verwendet werden soll . Diese Logik gehört in Ihren Controller, da sie Kenntnisse in Bezug auf die "geschäftliche" Seite Ihrer Anwendung benötigt. Es ist völlig ausreichend , um die Art zu erfüllen, aber es ist getrennt von dem Code, der tatsächlich führtes. Der zu sortierende Code befindet sich möglicherweise in Ihrer Ansicht, in Ihrem Modell oder sogar in der Persistenzschicht, die Ihr Modell unterstützt (z. B. Ihre SQL-Datenbank).

dasblinkenlight
quelle
12
-1 Wie haben Sie es geschafft, dies aus diesem Zitat zu schließen? Wurde irgendwo gesagt, dass der Controller Informationen aus dem Modell abrufen soll? Der Controller sendet Befehle zum Ändern des Status. Über das Extrahieren oder Manipulieren der Informationen wird nichts gesagt.
Tereško
3
@ tereško Wie haben Sie aus meiner Antwort den Schluss gezogen, dass der Controller Informationen aus dem Modell abrufen muss? Mit "Sortierlogik" meine ich nur die Logik, die zum Erstellen einer Reihenfolge erforderlich ist - in C # ausgedrückt bedeutet dies eine Implementierung von IComparer<T>. Die verbleibende "Boilerplate-Mechanik" der Sortierung, einschließlich des Abrufs von Daten aus dem Modell, hängt von der Ansicht ab.
Dasblinkenlight
3
".. Sortierlogik gehört in die Steuerung .." , was bedeutet das noch?
Tereško
3
"Ein Controller kann Befehle an die zugehörige Ansicht senden, um die Darstellung der Ansicht zu ändern" klingt wirklich so, als würde die Ansicht als Antwort auf den Befehl des Controllers die Sortierung durchführen.
Samuel Edwin Ward
1
@KyleM Die Ansicht verfügt jedoch nicht immer über genügend Kenntnisse, um die Sortierlogik zu enthalten. Stellen Sie sich beispielsweise ein Feld vor, dessen numerischer Code einer der Aufzählungen entspricht {Unknown, Pass, Fail}. Nehmen Sie weiter an, dass Unknownimmer zuletzt sortiert werden muss, unabhängig von der aufsteigenden oder absteigenden Reihenfolge, die der Benutzer ausgewählt hat. Wenn Sie diese Logik in die Ansicht einfügen, wird Ihre Ansicht zu viel über die geschäftliche Natur der Daten innerhalb des codeFelds aussagen . Die Ansicht sollte es nicht wissen: Alles, was sie weiß, ist, dass der Benutzer eine "Sortier" -Geste ausgeführt hat (z. B. auf eine Kopfzeile geklickt hat); Der Rest liegt beim Controller.
Dasblinkenlight
10

Nichts des oben Genannten. Sortieren ist Geschäftslogik, und Geschäftslogik gehört zu keiner der drei. Nicht jeder Code in Ihrer Anwendung ist ein Modell, eine Ansicht oder ein Controller.

In meinen MVC-Apps habe ich normalerweise eine Service-Schicht, die die gesamte Geschäftslogik ausführt. Die Methoden in der Serviceschicht sollten eine saubere, einfache API mit gut benannten Parametern haben. Sie können diese Methoden dann von Ihrem Controller aus aufrufen, um die Daten in den Modellen zu bearbeiten.

In diesem Sinne ist die Sortierung "in der Steuerung", aber der Code selbst, der die Sortierung vornimmt, sollte nicht in der Steuerung implementiert, sondern nur von dort aufgerufen werden.

nicht
quelle
5
Ich wurde kürzlich darüber informiert, dass einige Leute eine "Serviceschicht" (Geschäftslogik) als Teil des Modells betrachten.
Marvo
@Marvo Ich denke, es gibt einige Fälle, in denen bestimmte Logikelemente so eng mit ihrem Datentyp verbunden sind, dass es sinnvoll ist, sie in einer Klasse zusammenzufassen. (Zeit- und Datumsfunktionen zum Beispiel). Im Allgemeinen funktioniert es jedoch am besten, wenn Modellobjekte nur Daten enthalten.
Nicht
Wo "lebt" dann die Geschäftslogik im MVC-Muster?
Marvo
2
Nur weil eine Anwendung ein MVC-Muster verwendet, bedeutet dies nicht, dass jeder Code in der Anwendung ein Modell, eine Ansicht oder ein Controller ist. Das nimmt Designmuster zu wörtlich. Zum Beispiel hat Ihre Anwendung wahrscheinlich eine Konfigurationsdatei. Diese Konfigurationsdatei modelliert weder Benutzerdaten noch präsentiert sie Ansichten oder steuert den Datenfluss durch Modelle zu Ansichten. Es ist eine Konfigurationsdatei, die eine eigene Sache ist.
Nicht
Genauso gut könnte man eine Konfigurationsdatei als Teil des Modells betrachten. Das Modell muss keine Datenbank sein. Ich sage nicht, dass du richtig oder falsch bist. Ich schlage nur vor, dass Sie, wie ich es kürzlich getan habe (weil ich die gleiche Ansicht wie Sie hatte), das Thema ein wenig googeln und sehen, was andere sagen.
Marvo
8

Auf keinen Fall der Controller: Er sendet Nachrichten zum Anzeigen und Modellieren, sollte aber so wenig Arbeit wie möglich leisten. Wenn der Benutzer die Sortierung ändern kann, wird diese Anforderung von der Steuerung verarbeitet, indem er das Modell oder die Ansicht darüber informiert.

Vielleicht die Ansicht, wenn es eine reine Ansichtssache ist. Wenn die Anwendung ohne Sortierung genauso gut funktioniert, ist die Sortierung nur ein Teil der Darstellung und sollte in die Ansicht aufgenommen werden.

Wenn die Reihenfolge Teil der Domäne ist, sollte sie in das Modell aufgenommen werden.

Jens Schauder
quelle
Zählt "Bereitstellen eines Komparators oder eines Sortierdeskriptors" als "Arbeiten"? Weil eine Sortierlogik in einem Komparator oder einem Sortierdeskriptor gekapselt ist, selbst wenn die "Sortierarbeit" in der Sortiermethode oder im Back-End des Modells ausgeführt wird.
Dasblinkenlight
Kommt darauf an, was du damit meinst: Weitergeben ist in Ordnung. Der Komparator sollte jedoch Teil des Modells oder der Ansicht sein, nicht der Controller.
Jens Schauder
6
  • Ansichten sind der Teil von MVC, der Präsentationslogik enthalten soll.
  • In der Modellebene ist die Geschäftslogik enthalten.
  • Controller ändern nur den Status von beiden basierend auf Benutzereingaben.

Die Wahl ist also: Glauben Sie, dass dies Teil der Geschäftslogik oder Präsentationslogik der Domäne ist?

Wenn Sie ein korrektes MVC-Modell2 oder ein klassisches MVC-Muster implementieren, würde ich sagen, dass die Reihenfolge der von der Modellebene bereitgestellten Daten durch die Anforderung der Ansicht an die Modellebene ausgelöst werden sollte. View fragt nach geordneten Daten, die Modellebene stellt sie bereit.

Da Sie jedoch die Interpretation des MVC-Musters von ASP.NET MVC verwenden, die sich etwas von Ihrer Standard-MVC unterscheidet, sollte die ViewModel-Instanz geordnete Informationen von der Modellebene anfordern (aus irgendeinem Grund ist das ASP.NET-Framework der Ansicht, dass Vorlagen aufgerufen werden sollten "Ansichten" und Ansichten sollten "Ansichtsmodelle" genannt werden (es ist seltsam).

tereško
quelle
12
Sie haben mehrere Antworten mit Ihrer eigenen Annahme, was sie unter " Sortierlogik" verstehen, weiter herabgestimmt . Ihre Annahme ist völlig falsch - die Sortierlogik umfasst das Abrufen nicht und hat es auch nie getan.
Dasblinkenlight
1
@dasblinkenlight, ja, ich habe mehrere Themen abgelehnt, weil sie alle implizierten, dass der Controller die Sortierung durchführen sollte. Was falsch ist. Und ... Leute ... bitte hör auf, meine Kommentare zu markieren, nur weil du nicht einverstanden bist.
Tereško
Um ganz klar zu sein: Ich habe Ihre Antwort nicht abgelehnt, weil sie nicht falsch ist, und ich habe nie einen Ihrer Kommentare markiert, weil ich sie dann in keiner Weise als missbräuchlich empfinde. Ehrlich gesagt, ich weiß nicht, wie Ihre Antwort so viele Abstimmungen hervorgerufen hat: Ich denke, sie sind schlecht durchdacht.
Dasblinkenlight
@dasblinkenlight naah .. ich tobte über meine Kommentare, die in diesem Thema zufällig verschwunden sind.
Tereško
5

Normalerweise würde ich es im Controller tun, um gemäß den anderen Antworten im Einklang mit dem Muster zu bleiben. Begründung siehe unten.

Ich habe darüber nachgedacht und die Antworten und das dazugehörige Material gelesen. Pragmatisch gesehen würde ich sagen, dass dies von Ihrer Bewerbung abhängt, zum Beispiel:

Handelt es sich um eine mittlere / große Anwendung und / oder sind mehrere Benutzeroberflächen zugeordnet (z. B. eine Windows-App, eine Webschnittstelle und eine Telefonschnittstelle).

  • In diesem Fall würde ich wahrscheinlich eine Service-Schicht erstellen und in das Geschäftsobjekt einfügen und dann die entsprechende Methode vom Controller aufrufen.

Wenn es sich um eine gut definierte Website mit einer einzigen Benutzeroberfläche handelt und Sie etwas wie EF Code First verwenden und nicht die Absicht haben oder nicht beabsichtigen, eine Service-Schicht zu erstellen, und planen, eine einfache, sofort einsatzbereite Erweiterungsmethode zu verwenden, um diese zu erreichen:

  • In diesem Fall würde ich es wahrscheinlich in den Controller einfügen, da es pragmatisch in Bezug auf Zeit / Budget am besten passt.

Wenn es dasselbe wie das obige ist, kann es jedoch nicht mit einer sofort einsatzbereiten Erweiterungsmethode implementiert werden.

  • Ich kann mich durchaus dafür entscheiden, es in die Model-Klasse aufzunehmen (wenn es wirklich auf diesen einzelnen Typ zugeschnitten ist), da es hier geeigneter wäre als in einem Controller. Wenn die Sortierung auf mehr als eine Klasse angewendet werden könnte, würde ich sie in einer Erweiterungsmethode implementieren und dann im Controller aufrufen.

Um zusammenzufassen:

Dogmatische Antwort: Service Layer

Pragmatische Antwort: Normalerweise der Controller

Luke Baughan
quelle
In welcher Definition ist der Controller für die "Vorbereitung der Daten für die Ansicht" verantwortlich?
Tereško
1
@ tereško: Wo das Modell "passiv" ist, wie hier beschrieben msdn.microsoft.com/en-us/library/ff649643.aspx im Abschnitt Variationen. Siehe "HTTP ist ein Beispiel dafür". Während ein Purist dies bestreiten mag, kann es für Anfänger, die in MVC anfangen, einfacher sein, EF oder andere Modelle direkt im Controller zu verwenden, und nicht durch eine BAL, dies so zu betrachten, dass die Barriere für ein besseres Verständnis des Musters gesenkt wird.
Luke Baughan
1
Sie sprechen von einem "anämischen Modell".
Tereško
Punkt bemerkt, ich habe die beleidigenden Beschreibungen entfernt, wie Sie vorgeschlagen haben. Prost auf die Eingabe!
Luke Baughan
3

Ich würde vorschlagen, Daten aus einer Tabelle zu sortieren - Daten, die klein genug sind, um in einer Dropdown-Liste nützlich zu sein - sollten aus der Datenbank stammen, die bereits über die Abfrage sortiert wurde. Für mich ist das Modell der Ort, an dem die Sortierung angewendet wird.

Wenn Sie entschlossen sind, die Sortierung von Hand durchzuführen, gibt es meiner Meinung nach gute Argumente dafür, entweder das Modell oder den Controller als bevorzugten Ort für die Logik zu verwenden. Die Einschränkung wäre Ihr spezieller Rahmen. Ich bevorzuge es, Daten ausschließlich im Modell zu verwalten. Ich benutze den Controller, um Daten (Modell) und Präsentation (Ansicht) zu heiraten, wie ich es mir selbst beigebracht habe.

B0nk3r
quelle
2

Obwohl ich im Prinzip der Idee zustimme, dass Sortieren Business Logic ist, weil Sie durch Aufschlüsselung nach dem Ursprung etwas wie "Der Kunde möchte, dass die Produktseite mit den nach Datum sortierten Bildern angezeigt wird" erhalten, wird klar, dass Die Sortierreihenfolge für Daten ist normalerweise nicht willkürlich - auch wenn keine Sortierung erfolgt, da dies immer noch eine Geschäftsentscheidung durch Auslassung ist (eine leere Liste ist immer noch eine Liste).

ABER ... Diese Antwort scheint die Fortschritte in der ORM-Technologie nicht zu berücksichtigen. Ich kann nur in Bezug auf das Entity Framework (vermeiden wir einen Streit darüber, ob dies wahres ORM ist, das ist nicht der Punkt) von Microsoft as sprechen Das ist, was ich benutze, aber ich bin sicher, dass andere ORMs ähnliche Funktionen bieten.

Wenn ich mit MS MVC und dem Entity Framework eine stark typisierte Ansicht für eine Produktklasse erstelle und eine Fremdschlüsselbeziehung zwischen der Produkt- und der Image-Tabelle (z. B. FK_Product_Image_ProductId) besteht, kann ich sofort schnell sortieren die Bilder während ihrer Anzeige mit so etwas in der Ansicht:

@foreach(Image i in Model.Image.OrderBy(e => e.DisplayOrder)){ //etc etc... }

Es wurde eine bestimmte Business Logic-Schicht erwähnt, mit der ich auch 80% meiner Geschäftslogik ausführe, aber ich werde keine Sortierfunktionalität in meine Business Logic-Schicht schreiben, die etwas nachahmt, das sofort einsatzbereit ist aus dem Entity Framework.

Ich glaube nicht, dass es eine richtige Antwort auf diese Frage gibt, außer das zu sagen. Sie sollten komplexe Geschäftslogik nach Möglichkeit abstrahieren, jedoch nicht auf Kosten der Neuerfindung des Rads.

rauben
quelle
Ich dachte das Gleiche, die Antworten hier scheinen ORMs und Erweiterungsmethoden nicht zu berücksichtigen. In den meisten Fällen ist die Sortierlogik so einfach wie myList.OrderBy(x => x.CreationDate)- es ist wirklich nicht erforderlich, unnötige zusätzliche Ebenen einzuführen, um dies zu tun. Was würden sie tun, wenn sie ausgelagerte und sortierte Daten benötigen würden? Die ganze Tabelle abfragen, sortieren und behalten, was sie brauchen? Man könnte einfach anrufen myList.OrderBy(x => x.Date).Skip((page-1)*pageSize).Take(pageSize)und es werden keine unnötigen Daten abgerufen.
Balázs
1

Angenommen, Sie haben eine MVC-Website, eine WebForms-Website und eine mobile Anwendung.

Wenn Sie möchten, dass die Sortierung zwischen diesen Präsentationsebenen konsistent ist, würde ich sagen, dass Sie außerhalb der Präsentationsebene sortieren. Service wäre ein guter Kandidat.

Andernfalls würde ich diese Logik in einem Ansichtsmodell speichern. Warum? Weil es wiederverwendbar und leicht testbar ist.


quelle
0

Von den drei, die Sie aufgelistet haben, würde ich sagen, dass es in den Controller gehört. Ich mag es jedoch nicht wirklich, diese Art von Logik in den Controller zu setzen. Normalerweise erstelle ich eine Serviceschicht, mit der der Controller kommuniziert und die für die Kommunikation mit dem Datenspeicher und die Sortierlogik verantwortlich ist. Für kleine Anwendungen ist es jedoch in Ordnung, im Controller zu sitzen.

Entlassen
quelle
2
Das würde die Logik mehr auf die Modellseite bringen, richtig?
Ryan Kohn
Ja, mein Verständnis einer "Service-Schicht" ist, dass sie Teil des Modells ist.
Marvo
0

Dies ist eine Frage, die im Hinblick auf asp.net gestellt wurde, aber da jemand Rails erwähnt hat, hielt ich es für interessant, das Problem in diesem Zusammenhang zu betrachten. In Rails ist es natürlich und ziemlich üblich, die Sortierung zusammen mit dem Abruf als Controller-Aktion durchzuführen, da das Framework und die ActiveRecord / ActiveQuery-API dies vorsehen. Auf der anderen Seite ist es möglich, eine benutzerdefinierte Sortierreihenfolge für statische Elemente zu definieren und diese in das vom Controller zu verwendende Modell einzufügen, damit das Modell eine Rolle in der Sortierlogik spielen kann, obwohl dies nicht ausgeführt wird die Operation direkt. Was auch immer es ist, man kann mit Sicherheit sagen, dass es im Allgemeinen verpönt ist, die Sortierlogik in die Ansicht aufzunehmen.

Ich bin ein wenig amüsiert darüber, dass einige Antworten absolut dagegen sind, die Sortierung entweder in den Controller oder in das Modell einzufügen, und ich finde sie für meinen Geschmack zu pedantisch, aber ich nehme an, dass dies von der Art des verwendeten Frameworks und den damit verbundenen üblichen Konventionen abhängt es. Ich stimme auch der Bemerkung von Bill K zu, dass die Trennung an erster Stelle wichtiger ist.

prusswan
quelle