Entfernen der Logik aus Teilansichten in ASP.NET MVC

7

Ich bin mir bewusst, dass Ansichten keinen Code enthalten sollten, aber in einem Projekt, an dem ich arbeite, habe ich eine Menge Logik in den Ansichten.

Meine Startseite hat

%Vor%

Jetzt in der Teilansicht habe ich eine sehr große Menge an Logik wie diese;

%Vor%

Nun könnte ich den Home-Controller dazu bringen, eine andere Ansicht zurückzugeben, weil die Liste leer ist, aber das möchte ich nicht wirklich, da die Indexansicht ein paar Dinge anzeigt, egal ob Ergebnisse vorhanden sind oder nicht.

Die einzige andere Sache, die ich mir hier vorstellen kann, ist, dies in einer Hilfsmethode wie Html.SearchResults einzukapseln. Aber dann würde ich den Helfer brauchen, um das renderPartial für jedes Suchergebnis auch aufzurufen. Das scheint keine saubere Trennung von Bedenken zu sein.

Ich müsste allerdings immer noch die erste if-Anweisung in der Teilansicht haben.

Wie würden Sie am besten damit umgehen?

    
ddd 05.06.2009, 16:25
quelle

4 Antworten

13

Meine persönliche Meinung ist, dass das in Ordnung ist. Die Logik, die Sie verwendet haben, hängt vollständig davon ab, wie das Modell angezeigt werden soll.

Sie müssen nur darauf achten und sicherstellen, dass Sie niemals Geschäftslogik, Datenzugriffslogik oder irgendetwas anderes mischen, das nicht unbedingt mit der Anzeige des Modells verknüpft ist.

    
Praveen Angyan 05.06.2009, 16:30
quelle
10

Ich stimme der Antwort von Praveen Angyan zu. Das einzige, was ich sagen könnte, um seine Antwort zu erweitern, ist, etwas Logik in das ViewModel zu bringen.

Zum Beispiel können Sie im ViewModel

ausblenden

Model.restaurantsList.Count() > 0

hinter einer Methode oder Eigenschaft.

E.G .:

%Vor%     
TWith2Sugars 08.06.2009 08:32
quelle
1

Diese Antwort hat nichts mit Ihrer Frage zu tun.

Ich möchte Ihnen jedoch nur mitteilen, dass das Aufrufen von Html.RenderPartial () innerhalb einer Schleife nicht effizient ist.
ASP.NET MVC - For-Schleife innerhalb von RenderPartial oder Outside RenderPartial

Es wäre besser, es in etwas wie unten zu ändern.

%Vor%     
stun 23.11.2009 17:07
quelle
1

Praveen Angyan hat Recht - das ist View-Logik und es ist in Ordnung, dass es dort ist, wo es ist.
Aber das ändert nichts an saubereren Ansichten.

wollte nur kleine Verbesserungen teilen.
Wenn wir die winzige HtmlHelper-Methode anfügen, können wir die Ansicht auf etwas wie diese verkürzen:

%Vor%

Für einige - es sieht vielleicht nicht lesbar und schön aus, aber es passt für mich gut genug.

    
Arnis Lapsa 23.11.2009 17:20
quelle