Benutzt Razor irgendwie wie zur klassischen asp [geschlossen] zurück

8

Ich schaue mir die Razor-Engine an und frage mich, wie sie im Vergleich zur ursprünglichen ASP-Implementierung "anders" ist, bei der sich der Server- und der Front-End-Code auf derselben Seite befinden.

Warum sollte mich Razor interessieren?

    
frenchie 12.11.2011, 16:52
quelle

3 Antworten

7

Im klassischen ASP hatten Sie business -Code in Ihrer Datei ("Holen Sie Zeug aus der Datenbank und handeln Sie damit").

In ASP.net MVC - unabhängig davon, ob Sie die ASPX- oder Razor View Engine verwenden - handelt es sich um View Logic. Dinge wie "Ich habe 20 Angestellte, zeige sie in einer Tabelle an" oder "Wenn diese Zahl negativ ist, zeige sie in Rot statt in Schwarz an".

Die Geschäftslogik ist in den Controllern und niedriger. Der Controller übergibt die Geschäftsdaten dann über ein Ansichtsmodell an die Ansicht. Die View verfügt dann nur über Code, der die Anzeige übernimmt, was normalerweise trivial ist, aber einige eigene Logikzweige haben kann ("Datumsangaben im Benutzergebietsschema anzeigen" oder "Männliche und weibliche Mitarbeiter in separaten Tabellen anzeigen")

Sie können den Fehler machen, hier Geschäftslogik zu setzen. Nehmen wir an, Mitarbeiter, die vor 2008 eingestellt wurden, haben Anspruch auf ein Loyalitätszertifikat. Ihre Tabelle hat also eine Spalte "Zertifikat drucken", die nur für diese angezeigt wird. Der einfache, aber falsche Ansatz ist eine if-Anweisung:

%Vor%

Das funktioniert, ist aber falsch, weil die Sicht jetzt Geschäftslogik enthält. Der richtige Ansatz besteht darin, dem ViewModel ein neues Bool-Feld hinzuzufügen. Da es in diesem Beispiel ein IList<Employee> enthält, bedeutet das, dass eine weitere EmployeeWithCertificateEligibility -Klasse oder besser separate Listen für berechtigte und nicht berechtigte Mitarbeiter erstellt wird. Es ist jedoch üblich, Business-Logik in die Ansicht zu integrieren, manchmal in Form einer HtmlHelper-Erweiterungsmethode.

Bearbeiten: Sie vergleichen es mit der "ersten klassischen ASP-Implementierung". Das kann drei Dinge bedeuten: Klassisches ASP, ASP.net WebForms oder ASP.net MVC mit der WebForms / ASPX View Engine. Mein Beispiel betrifft die ersten beiden Fälle. Wenn Sie bereits den ganzen MVC-Kram kennen und sich nur über die Unterschiede zwischen den Webforms und der Razor View Engine wundern: konzeptionell sind sie die gleichen, Razor ist nur viel weniger ausführlich und sauberer.

    
Michael Stum 12.11.2011, 17:00
quelle
6

Es ist alles, wie Sie es benutzen.

Der Hauptvorteil von Razor ist, dass es einem Entwickler ermöglicht, kompakter und expressiver zu sein, mit seinem Layout, ähnlich wie Spark oder NHaml.

Anstatt zu schreiben:

%Vor%

Sie können es flüssiger schreiben:

%Vor%

Es ist einfacher zu lesen, fließt besser und in komplizierteren Fällen kann weniger Code sein.

Die Realität ist, dass Razor und sogar klassische WebForms Sie Ihren Code und Markup zusammen mischen können.

Es ist Sache des Programmierers zu wissen, wann es gut oder schlecht ist.

Ist es schlecht, ein wenig Logik in die Ansicht zu streuen? Vielleicht nicht. Ist es schlimm, deine gesamte Logik in die View zu schreiben, wahrscheinlich ja. Was ist, wenn es eine einfache zweiseitige Anwendung gegen eine Unternehmensanwendung ist ..... Ich denke, dass Sie meinen Antrieb bekommen. : -)

Hier ist eine nette Zusammenfassung und another einiger der Dinge, die Razor tun kann das macht es auch mächtiger View Engine als klassischer ASP.

Ein Abschiedsgedanke. Razor ist eine View Engine. Es wurde entwickelt, um unsere Arbeit beim Erstellen der Ansicht zu erleichtern. Es ist nicht dazu gedacht, unsere gesamte Anwendungslogik zu codieren. Wenn Sie es sind, tun Sie es definitiv falsch.

Klassisches ASP hatte nicht wirklich eine einfache Unterscheidung zwischen der View-Engine und dem Code.

    
klabranche 12.11.2011 17:11
quelle
0

Ihre Frage bedeutet, dass Sie mit ASP.NET MVC nicht auf dem neuesten Stand sind. Ihre Frage bezieht sich auf ASP.NET MVC WebForms, nicht nur auf .cshtml- oder .vbhtml-Dateien. Ihre Frage bezieht sich auf Ansichten in MVC.

In Bezug auf Lernkurven, stellst du das Pferd vor den Wagen. Jedes Buch über MVC beginnt mit einer Beschreibung der Unterschiede zwischen MVC, ASP.NET Plain Vanilla und dem, was man ASP.COM oder klassisches ASP nennen könnte.

Die Logik, die Sie in Ihre Ansichten in MVC mit Razor oder Ihrer View Engine Ihrer Wahl schreiben, ist Display Logic. ASP klassisch war jede Logik, Geschäft, Anzeige, Datenzugriff ...

Also, um deine Frage zu beantworten, solltest du dich um MVC kümmern (und nicht nur über Razor), weil es dir erlaubt, diese Logik in uhmmm logische Container aufzuteilen. Sie mischen nicht alles in der Ansicht.

Dh, was Sie interessieren sollten, und entscheiden, ob es Ihnen passt, ist ASP.NET MVC. Wenn Sie sich für MVC entscheiden (weil es Ihnen das Leben leichter macht und Ihre Kunden glücklicher sind), dann sollten Sie sich definitiv für Razor interessieren, denn es macht Ihr Leben noch einfacher.

    
awrigley 12.11.2011 17:27
quelle

Tags und Links