tutorial Warum kann ich Serversteuerelemente in ASP.net MVC nicht verwenden?




asp.net mvc vs core (4)

Ich bin es gewohnt, Steuerelemente wie GridView und die MS-Chart-Steuerelemente zu verwenden, die ich fast vollständig verloren habe, ohne sie zu entwickeln. Es scheint fast wie neu zu beginnen.

In diesem Fall ist ein Neustart gut .

Ich habe eine ähnliche Reise gemacht. Wenn Ihnen gerade HTML Angst macht, versuchen Sie es mit dem System.Web.UI.HtmlControls Namespace. Dies ermöglicht Ihnen den Zugriff auf Standard-HTML-Steuerelemente, aber Sie können sie trotzdem in Serversteuerelemente runat="server" (indem Sie entweder das runat="server" oder sie in äquivalente ASP.NET-Steuerelemente konvertieren) .

Neben der Antwort von Darin gibt es ein weiteres Problem mit ASP.NET: Sie sind an die Web-Ansicht von Microsoft gebunden. Das GridView du liebst? Es erzeugt schlechtes HTML. Die Paging Steuerelemente, die es zur Verfügung stellt? Noch schlimmer. Auch wenn Sie nur wenig über HTML-Kompatibilität wissen, sollten geschachtelte Tabellen Ihnen die Schrecken geben. In GridView Weise ist jeder, der GridView glücklich, dass das von Microsoft (und in geringerem Maße Google und Mozilla) unterstützte Web von solch einem schrecklichen Ausgangspunkt stammt.

Abschließend, um es zusammenzufassen: Mein Vorschlag ist, dass Sie versuchen, Ihre Seiten neu zu schreiben oder neue Web-Anwendungen (so gut wie Sie können) mit HtmlControls . Sie werden wahrscheinlich etwas JavaScript / jQuery lernen müssen und sich vielleicht in die Welt von AJAX wagen müssen, damit Ihre Steuerelemente so funktionieren, wie Sie es wollen.

Nutzen Sie dies als Sprungbrett in die Welt von MVC. Sie werden nicht die gleichen Technologien verwenden (und möglicherweise eine Menge JavaScript / jQuery löschen), aber es wird Ihnen helfen, die Art, wie Sie über die Webentwicklung denken, in viel kleinere und vielleicht einfacher zu absorbierende Stücke zu ändern.

Letztendlich, so sehr Ihnen auch Ihre ASP.NET-Steuerelemente gefallen, haben Sie viel mehr Freiheiten und Sie entwickeln auch Websites, die neue Technologien nutzen, die Ihren Websites einen Mehrwert bieten.

Ich bereite mich vor, für die Entwicklung einer kleinen ASP.net MVC-Anwendung verantwortlich zu sein. Dies ist das erste Mal, dass ich eine MVC-Anwendung erstelle, also bin ich aufgeregt!

Ich habe die Dokumentation sorgfältig gelesen und ich habe das Gefühl, dass ich die allgemeine Vorstellung davon habe, wie MVC funktioniert. Wenn ich jedoch richtig verstehe, sind Serversteuerelemente (wie zum Beispiel GridView) nicht Teil von MVC.

Meine Frage ist: Warum? In meinem Entwicklungs-Shop bin ich es gewohnt, Steuerelemente wie GridView und die MS-Chart-Steuerelemente zu verwenden, bei denen ich fast völlig verliere, ohne sie zu entwickeln. Es scheint fast wie neu zu beginnen.

Warum sind die Serversteuerelemente nicht verfügbar? Wie erwartet Microsoft, dass ich ohne sie arbeite? Was sind die Alternativen?


Kernstück ist der Model View Controller (MVC), der die Entkopplung fördert. Die Idee ist, dass Sie Ihrer Ansicht (Webseite) ein Modell mit allen Daten, die es gerendert werden soll, zuführen. Serversteuerelemente sind eng miteinander verbunden. Es gibt kein Konzept des Staates in MVC oder "sollte" sowieso kein Konzept sein.


Meine Frage ist: Warum?

Die meisten davon hängen von Dingen wie ViewState und den Postback-Modellen ab, die Teil des klassischen WebForms-Modells sind und in ASP.NET MVC nicht mehr existieren. Diese serverseitigen Steuerelemente beruhen auf Ereignissen, die Postbacks für den Server ausführen, die ihren Status in ausgeblendeten Feldern (ViewState) beibehalten. In ASP.NET MVC arbeiten Sie nicht mehr mit Ereignissen wie Button1_Click . In ASP.NET MVC arbeiten Sie mit einem Model, einem Controller und View. Der Controller ist dafür zuständig, Benutzeranforderungen zu empfangen, das Modell abzufragen, die Ergebnisse in ein Ansichtsmodell zu übertragen und dieses Ansichtsmodell an die Ansicht zu übergeben, deren Aufgabe es ist, sie in irgendeiner Form anzuzeigen.

In ASP.NET MVC gibt es HTML-Helfer, mit denen einige wiederverwendbare HTML-Fragmente zwischen Ansichten generiert werden können. Sehen Sie sich zum Beispiel die Telerik ASP.NET MVC-Suite solcher Helfer an. Sie nennen sie Steuerelemente, aber sie haben nichts mit klassischen webforms serverseitigen Steuerelementen zu tun. Sie sind nur HTML-Helfer.

Grundsätzlich sind klassische WebForms eine undichte Abstraktion des Webs. Was Microsoft in der Zeit als sie dieses Framework entwarfen, war, bestehende Fähigkeiten von Windows-Entwicklern ins Web zu bringen, was immer mehr an Dynamik gewann. Da das Web jedoch noch eine neue Technologie war, mit der die meisten Entwickler noch nicht vertraut waren, haben sie diese Abstraktion geschaffen, um die Funktionsweise des www zu verbergen. Diese Entwickler waren daran gewöhnt, Steuerelemente auf ihren Windows Forms zu ziehen und abzusetzen, indem sie auf Schaltflächen doppelklickten, die für sie einen Code erzeugten, in den sie ihre Datenzugriffslogik einfügten, und so weiter. Dieses Modell wurde dank WebForms auf die Entwicklung von Webanwendungen übertragen. Das HTTP-Protokoll wurde erfolgreich hinter dieser Abstraktion namens WebForms versteckt. Zum Beispiel brauchen Sie weder HTML noch Javascript, nicht einmal CSS, um eine Webseite mit WebForms zu erstellen, was wirklich großartig ist, weil das Framework all diese Dinge für Sie abstrahiert. Leider verhindert dies, dass Sie die volle Leistung von Web-Technologien auf niedrigerer Ebene, die einige Benutzer bei der Entwicklung von Web-Anwendungen benötigen, problemlos nutzen können.

Was ASP.NET MVC tut, ist im Grunde diese undichte Abstraktion zu entfernen und das www zu den Entwicklern zu bringen, so wie es von seinen Machern beabsichtigt war. ASP.NET MVC ist im Vergleich zu klassischen WebForms nicht ausgereift genug, so dass Sie nicht erwarten können, die gleiche Auswahl an verfügbaren Steuerelementen und Widgets zu finden, aber die Dinge verschieben sich langsam.

Ich würde empfehlen, dass Sie hier mit ASP.NET MVC starten: http://asp.net/mvc . Sehen Sie sich die Videos an, spielen Sie mit den Beispielen und sehen Sie, ob ASP.NET MVC für Sie geeignet ist oder nicht. Und natürlich, wenn Sie auf eine bestimmte Schwierigkeit oder Frage stoßen, zögern Sie nicht, hierher zu kommen und danach zu fragen.


Ich bin neu in MVC und habe herausgefunden, dass Partial Views beim Erstellen kleiner, wiederverwendbarer UI-Elemente, die nicht in _Layout passen, ähnlich sind. ZB Schieberegler, Slideshows, Navigation, vorgestellte Abschnitte, obwohl Sie @section dafür verwenden können, finde ich Teilansichten als vorteilhafter. Dieses Konzept ermöglicht es mir, wiederverwendbare Bibliotheken zu erstellen, die ich leicht auswechseln und in anderen Projekten verwenden kann. Das ist für mich ähnlich wie bei den Kontrollen, obwohl es eine Debatte sowohl für als auch gegen diese Analogie gibt.





asp.net-mvc-3