Frage

Wie viele andere auf dieser Website denke ich über einen Wechsel zu ASP.NET MVC für zukünftige Projekte nach.Derzeit werden auf meinen Websites die herkömmlichen ASP.NET 2.0-Webformulare ausgeführt, und bei uns funktioniert es einwandfrei. Meine andere Möglichkeit besteht also darin, bei dem zu bleiben, was ich weiß, und auf ASP.NET 3.5 mit den integrierten AJAX-Komponenten umzusteigen.

Ich frage mich, wie Benutzersteuerelemente in ASP.NET MVC funktionieren.Wir haben jede Menge davon .ASCX Steuerelemente und einige zusammengesetzte Steuerelemente.Wenn ich mit Webdesignern zusammenarbeite, ist es sehr einfach, sie dazu zu bringen, ASCX-Steuerelemente effektiv zu nutzen, auch ohne Programmierkenntnisse, also ist das ein klares Plus.Aber die Nachteile sind natürlich der Seitenlebenszyklus, der nerven kann, und die Tatsache, dass ASCX-Steuerelemente nur schwer zwischen verschiedenen Projekten geteilt werden können.Zusammengesetzte Steuerelemente können gemeinsam genutzt werden, sind für einen Designer jedoch im Grunde eine Blackbox.

Was ist das Modell in ASP.NET MVC?Gibt es eine Möglichkeit, Steuerelemente zu erstellen, die die Probleme löst, mit denen wir uns mit ASCX und zusammengesetzten Steuerelementen befasst haben?Ein wichtiger Gesichtspunkt ist es, Webdesignern einen einfachen Zugriff zu ermöglichen, ohne befürchten zu müssen, dass der Code beschädigt wird.

War es hilfreich?

Lösung

Um ein Benutzersteuerelement zu implementieren, führen Sie den folgenden Aufruf aus:

<% Html.RenderPartial("~/Views/Shared/MyControl.ascx", {data model object}) %>

Möglicherweise sehen Sie auch die ältere Syntax, die ab PR5 nicht mehr gültig ist

<%= Html.RenderUserControl("~/Views/Shared/MyControl.ascx", {data model object}) %>

Bei der Umstellung von Web Forms auf MVC müssen Sie immer Angst haben, dass Code beschädigt wird. Das ASP.NET MVC-Team hat jedoch hervorragende Arbeit geleistet, um die Probleme zu minimieren.

Andere Tipps

Wie Nick vorgeschlagen hat, können Sie Ihre Benutzersteuerelemente tatsächlich rendern, aber offensichtlich funktionieren Seitenzyklus, Seitenstatus und Postback von herkömmlichen ASP-Webformularen nicht mehr, sodass Ihre Steuerelemente höchstwahrscheinlich unbrauchbar werden.

Ich denke, Sie müssen die meisten Ihrer komplexen Steuerelemente neu schreiben, um Ihre Website auf MVC zu portieren, während einfache Steuerelemente, die beispielsweise nur Formatierung bereitstellen und keinen Postback-Status haben, einfach funktionieren sollten.Der von Nick bereitgestellte Code funktioniert in diesem Fall einfach.

Und zum Teilen zwischen weiteren Projekten:Ich denke, dass Steuerelemente eher „wiederverwendbare HTML-Rendering-Komponenten“ sein werden, die auf einer Website gemeinsam genutzt werden können, als „wiederverwendbare Codekomponenten“ mit Logik (wie WebForms-Steuerelemente).Ihre Weblogik wird/sollte sich in den Seiten-Controllern und nicht in den HTML-Steuerelementen befinden.Daher ist die gemeinsame Nutzung von Steuerelementen über mehrere Projekte hinweg nicht so sinnvoll wie im Fall von WebForms.

MVC hat im Vergleich zu Ihrer Benutzersteuerung einen anderen Seitenlebenszyklus.

Sie können darüber nachdenken, dies noch einmal zu schreiben.

Das ASPX ist das Sicht.Sie müssen noch neu schreiben, die Syntax ist anders.JavaScript wird funktionieren.Aber ich finde kaum, dass die WebControls funktionieren werden.Weil MVC keinen Viewstate und kein Postback mehr hat.

Für den Code dahinter (aspx.cs) müssen Sie diesen in einen konvertieren Regler Klasse.Page_Load Methode wird nicht mehr funktionieren.Sie lassen es wahrscheinlich Index() Methode.

Modell sind einfach die Entitätsklassen, die Ihr Code dahinter verbraucht.

Fazit: Es handelt sich um eine völlige Neufassung.Prost.Viel Spaß beim Codieren.

Ja, Sie können RenderPartial ausführen.Das ist ein guter Anfang.Aber irgendwann werden diese Leute Logik und andere Controller-Sachen brauchen.Halten Sie Ausschau nach einer Subcontroller-Implementierung vom Framework-Team.Es sollte auch bald etwas in MvcContrib geben.Oder rollen Sie Ihr eigenes.

Bearbeiten: Ich habe gerade hier darüber gepostet: http://mhinze.com/subcontrollers-in-aspnet-mvc/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top