Jeder, der die neue Funktion für CSHTML-Seiten verwendet und feststellt, dass er diese neue Syntax der Ansichtsmodule der vorhandenen ASP.NET MVC-Standardansichtsengine oder Webformularen vorzieht, und wenn ja, warum? Was ist mit CSHTML, das Ihnen einen Vorteil gegenüber MVC oder Webformularen bietet oder umgekehrt?
Ich bin nur neugierig zu hören, wie die Leute es aufnehmen.
c#
asp.net-mvc
razor
Brian Mains
quelle
quelle
Antworten:
Einer der Vorteile besteht darin, dass Razor-Ansichten in Komponententests gerendert werden können. Dies war mit dem vorherigen ASP.Net-Renderer nicht einfach möglich.
Aus der Ankündigung von ScottGu geht hervor, dass dies eines der Designziele ist:
quelle
Ex Microsoft Developer's Opinion
Ich habe in einem Kernteam für die MSDN-Website gearbeitet. Jetzt verwende ich c # razor für E-Commerce-Sites mit meinem Programmierteam und wir konzentrieren uns stark auf das jQuery-Front-End mit Back-End-c # -Razor-Seiten und die LINQ-Entity-Speicherdatenbank, sodass die Seiten selbst bei verschachtelten Schleifen mit Abfragen eine Antwortzeit von 1-2 Millisekunden haben und kein Seiten-Caching. Wir verwenden keine MVC, sondern nur ASP.NET mit Rasiermesserseiten, die mit dem URL Rewrite-Modul für IIS 7 zugeordnet sind, keine ASPX-Seiten oder ViewState oder serverseitige Ereignisprogrammierung. Es verfügt nicht über die zusätzlichen (unnötigen) Ebenen, die MVC in Codekonstrukte für den herausgeforderten regulären Ausdruck einfügt. Weniger ist mehr für uns. Es ist alles schlank und gemein, aber ich gebe MVC Requisiten für seine Testbarkeit, aber das ist alles.
Rasiermesserseiten haben keinen Ereignislebenszyklus wie ASPX-Seiten. Es wird nur als eine angeforderte Seite gerendert. C # ist eine großartige Sprache und Razor tut alles, um es seinen Job machen zu lassen. Das anonyme Tippen mit Generika und Linq macht das Leben mit C # - und Rasiermesserseiten so einfach. Die Verwendung von Razor-Seiten hilft Ihnen dabei, leichter zu denken und zu codieren.
Einer der Nachteile von Razor und MVC ist, dass es keine ViewState-ähnliche Persistenz gibt. Ich musste eine Lösung dafür implementieren, also schrieb ich hier ein jQuery-Plugin dafür -> http://www.jasonsebring.com/dumbFormState , ein von HTML 5 Offline-Speicher unterstütztes Plugin für den Formularstatus, das in allen wichtigen Funktionen funktioniert Browser jetzt. Es ist derzeit nur für den Formularstatus vorgesehen, aber Sie können window.sessionStorage oder window.localStorage ganz einfach verwenden, um jede Art von Status über Postbacks oder sogar Seitenanforderungen hinweg zu speichern. Ich habe mich nur darum gekümmert, ihn automatisch zu speichern und anhand der URL und des Formularindex zu benennen du musst nicht darüber nachdenken.
quelle
Alles ist standardmäßig verschlüsselt !!! Das ist ziemlich groß.
Deklarative Helfer können zusammengestellt werden, sodass Sie nichts Besonderes tun müssen, um sie zu teilen. Ich denke, sie werden .ascx-Steuerelemente in gewissem Maße ersetzen. Sie müssen durch einige Rahmen springen, um ein .ascx-Steuerelement in einem anderen Projekt zu verwenden.
Sie können einen Abschnitt erstellen, der schön ist.
quelle
Der größte Vorteil ist, dass der Code prägnanter ist. Der VS-Editor verfügt außerdem über die IntelliSense-Unterstützung, die einige der anderen Ansichtsmodule nicht bieten.
Deklarative HTML-Helfer sehen auch ziemlich cool aus, da HTML-Helfer in C # -Code mich an benutzerdefinierte Steuerelemente in ASP.NET erinnern. Ich denke, sie haben eine Seite von Partials genommen, aber mit dem Inline-Code.
Also einige eindeutige Vorteile gegenüber der asp.net View Engine.
Im Gegensatz zu einer View-Engine wie Spark:
Spark ist noch prägnanter. Sie können die if's und Schleifen in einem HTML-Tag selbst behalten. Das Markup fühlt sich für mich immer noch natürlicher an.
Sie können Partials genau so codieren, wie Sie einen deklarativen Helfer ausführen würden. Sie würden nur die Variablen an das Partial weitergeben und Sie haben das Gleiche. Das gibt es schon eine ganze Weile mit Funken.
quelle