Ich würde gerne wissen, was, warum oder wann es besser ist, cshtml zu wählen und was, warum oder wann es besser ist, Aspx-Technologien zu wählen? Wofür sind diese beiden Technologien gedacht?
Danke dir,
Ich würde gerne wissen, was, warum oder wann es besser ist, cshtml zu wählen und was, warum oder wann es besser ist, Aspx-Technologien zu wählen? Wofür sind diese beiden Technologien gedacht?
Danke dir,
Antworten:
Wie andere Leute geantwortet haben .cshtml
(oder .vbhtml
wenn das Ihr Geschmack ist), bietet es eine Handler-Zuordnung zum Laden der MVC-Engine. Die .aspx
Erweiterung lädt einfach die aspnet_isapi.dll, die die Kompilierung durchführt und Webformulare bereitstellt. Der Unterschied in der Handlerzuordnung besteht lediglich darin, dass beide auf demselben Server nebeneinander existieren können, sodass sowohl MVC-Anwendungen als auch WebForms-Anwendungen unter einem gemeinsamen Stammverzeichnis ausgeführt werden können.
Dadurch kann http://www.mydomain.com/MyMVCApplication gültig sein und mit MVC-Regeln zusammen mit http://www.mydomain.com/MyWebFormsApplication als Standard-Webformular gültig sein.
Bearbeiten:
Was den Unterschied in den Technologien betrifft, soll das MVC (Razor) -Vorlagen-Framework .Net-Seiten an eine RESTful "webbasierte" Plattform von Vorlagenansichten zurückgeben, die die Codelogik zwischen dem Modell (Geschäfts- / Datenobjekte) trennt. , die Ansicht (was der Benutzer sieht) und die Controller (die Verbindung zwischen den beiden). Das WebForms-Modell (aspx) war ein Versuch von Microsoft, mithilfe einer komplexen Javascript-Einbettung eine statusbehaftete Anwendung zu simulieren, die einer WinForms-Anwendung mit Ereignissen und einem Seitenlebenszyklus ähnelt und in der Lage ist, ihren eigenen Status von Seite zu Seite beizubehalten.
Die Wahl des einen oder anderen wird immer umstritten sein, da es Argumente für und gegen beide Systeme gibt. Ich jedenfalls mag die Einfachheit in der MVC-Architektur (obwohl das Routing alles andere als einfach ist) und die Leichtigkeit der Razor-Syntax. Ich bin der Meinung, dass die WebForms-Architektur einfach zu schwer ist, um eine effektive Webplattform zu sein. Abgesehen davon gibt es viele Fälle, in denen das WebForms-Framework ein sehr prägnantes und verwendbares Modell mit einer reichhaltigen Ereignisstruktur bietet, die gut definiert ist. Alles läuft auf die Bedürfnisse der Anwendung und die Vorlieben derjenigen hinaus, die sie erstellen.
Razor ist eine Ansichts-Engine für ASP.NET MVC sowie eine Vorlagen-Engine . Razor-Code und ASP.NET-Inline-Code (Code gemischt mit Markup) werden zuerst kompiliert und vor der Ausführung in eine temporäre Assembly umgewandelt. Genau wie C # und VB.NET kompilieren beide zu IL, wodurch sie austauschbar sind, sind sowohl Razor- als auch Inline-Code austauschbar.
Daher ist es eher eine Frage des Stils und des Interesses. Ich bin eher mit Rasiermesser als mit ASP.NET-Inline-Code vertraut, dh ich bevorzuge Rasiermesserseiten (cshtml) gegenüber ASPX-Seiten.
Stellen Sie sich vor, Sie möchten eine Human
Klasse erhalten und rendern. In cshtml- Dateien schreiben Sie:
<div>Name is @Model.Name</div>
Während Sie in Aspx- Dateien schreiben, schreiben Sie:
<div>Name is <%= Human.Name %></div>
Wie Sie sehen können, @
erleichtert das Zeichen des Rasiermessers das Mischen von Code und Markup erheblich.
Model
wird für stark typisierte Ansichten verwendet, in denen Sie Ihren Typ oben mit einem model
Schlüsselwort definieren.
Während die Syntax zwischen Razor ( .cshtml
/ .vbhtml
) und WebForms ( .aspx
/ .ascx
) sicherlich unterschiedlich ist (Razor ist die prägnantere und modernere der beiden), hat niemand erwähnt, dass beide als View Engines / Templating Engines verwendet werden können, traditionelles ASP.NET Web Forms-Steuerelemente können für alle ASPX- oder ASCX-Dateien verwendet werden (auch in Verbindung mit einer MVC-Architektur).
Dies ist in Situationen relevant, in denen langjährige Lösungen für ein Problem erstellt und in eine steckbare Komponente (z. B. ein Steuerelement zum Hochladen großer Dateien) gepackt wurden und Sie diese in einer MVC-Site verwenden möchten. Mit Razor können Sie das nicht tun. Sie können jedoch dieselbe Backend-Verarbeitung ausführen, die Sie mit einer herkömmlichen ASP.NET-Architektur mit einer Web Form-Ansicht verwenden würden.
Darüber hinaus können ASP.NET-Webformularansichten Code-Behind-Dateien enthalten, mit denen Logik in eine separate Datei eingebettet werden kann, die zusammen mit der Ansicht kompiliert wird. Während die Softwareentwickler-Community wächst, um eng gekoppelte Architekturen und das Smart Client-Muster als schlechte Praxis zu betrachten , war dies früher die Hauptmethode und ist mit ASPX / ASCX-Dateien immer noch sehr gut möglich. Rasiermesser hat absichtlich keine solche Qualität.
Cshtml-Dateien werden von Razor verwendet. Wie als Antwort auf diese Frage angegeben , besteht ihr Hauptvorteil darin, dass sie in Komponententests gerendert werden können. Die verschiedenen Antworten auf dieses andere Thema werden viele andere interessante Punkte bringen.