ASP.NET MVC:Strukturierende Controller
-
09-06-2019 - |
Frage
Also beginne ich mit einem ASP.NET MVC
Projekt und obwohl die Erfahrung insgesamt gut war, bin ich mit dem Spaghetti-Durcheinander, zu dem meine Controller geworden sind, nicht ganz so zufrieden.Ich habe mich online umgesehen (CodeCampServer usw.) und sie scheinen alle unter dem gleichen Problem zu leiden, dass Controller-Methoden ziemlich konsequent gegen SRP (Prinzip der Einzelverantwortung) verstoßen – beispielsweise eine Controller-Methode, die einfach die Ansicht rendert, wenn die Anforderung vorhanden ist A GET
aber aktualisiert die model
wenn es ein ist POST
.Jetzt habe ich Controller-Methoden, die für mehrere logische Routen in der gesamten Anwendung verantwortlich sind – sagen wir, sie prüfen, welche button
auf das Formular geklickt wurde und sich entsprechend verhält.Ich könnte mit JavaScript jeden Button-Klick auf eine andere Formularaktion umleiten, aber da fühlt sich auch etwas nicht richtig an ...Das andere große Problem ist die Verbreitung von Magie strings - ViewData["foo"] = blah;
Lange Rede, kurzer Sinn: Wie geht es euch? structure
dein controller
Logik?Ein riesiges Modellobjekt pro Ansicht?Viele kleine controller methods
Und JavaScript
ist der Router?Mein Ziel ist wartbarer Code – je mehr Funktionen sich häufen, desto langsamer rutsche ich den rutschigen Abhang hinunter ...
Lösung
ASP.NET Preview 5 (verfügbar am CodePlex) hat darauf eine Antwort:das [AcceptVerbs]-Attribut.Phil Haack hat einen Blogeintrag Diskussion darüber, wie es verwendet wird.
Was die Schlüsselfrage zur magischen Ansicht von Daten betrifft, handelt es sich um ein interessantes Problem.Wenn Sie sich eine Ansicht als eine Ansammlung halbunabhängiger Komponenten vorstellen (insbesondere angesichts der neuen Teilansichtsunterstützung), ist die Erstellung eines stark typisierten Modells weniger ideal, da die verschiedenen Teile der Ansicht relativ unabhängig davon sein sollten einander.
Andere Tipps
Wie gehen verschiedene Personen mit diesem Problem um?Ich weiß, dass ich gerade ein paar Stunden damit verbracht habe, das Durcheinander im Modellordner durchzusehen.Ich finde, dass das Erstellen von Ordnern hilfreich ist, um die visuelle Unordnung zu reduzieren, und auch die Verwendung passender Namespaces hilft sehr.
Aber meine Controller sind im Moment Monolithen.Das Problem ist, dass ich mich bis zu diesem Punkt des Projekts auf das Lernen konzentriert habe (es gibt auch noch viel zu klären).
Ich komme jetzt gut mit MVC zurecht, daher ist es an der Zeit, die Komplexität zu überprüfen und darüber nachzudenken, die Controller in besser benannte und sauberere Funktionen umzuwandeln.
Teilen andere Leute ihre Controller in Untercontroller auf?(Wenn es so etwas gibt)