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?
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.
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%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% 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:
Für einige - es sieht vielleicht nicht lesbar und schön aus, aber es passt für mich gut genug.
Tags und Links asp.net-mvc refactoring partial-views