2012-05-08 15 views
17

Ich bin sehr neu in MVC ... Ich habe ziemlich viel Wissen mit Silver-Light und WPF und MVVM, aber wenig Wissen in Bezug auf MVC. Ich folge dem Haupt-Tutorial auf Microsofts Website http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/adding-a-view. Ich glaube, dass ich auf Artikel 3 von 9 stehe. Ursprünglich sagte er mir, ich solle meine MVC Site als "View Engine" von "Razor" erstellen. Ich entschied mich für "ASPX" anstelle von "Razor", da ich dachte, dass ich weniger Abhängigkeiten von Drittanbietern haben würde.MVC ASP.NET oder Razor

Wenn Sie eine neue MVC-Webanwendung starten, verwenden Sie am besten "Razor" statt "ASPX". Um ehrlich zu sein, ich habe keine Ahnung von dem Unterschied. Wie gesagt, ich habe ASPX gewählt, um zusätzliche Dlls oder Code von Drittanbietern zu vermeiden. Wenn es am besten ist, ASPX zu wählen, bin ich ein wenig verwirrt, warum die Tutorials auf der MS-Seite mir sagen, dass ich mit Razor anfangen soll.

Kann jemand etwas Licht darauf werfen, wenn ich die "ASPX" View Engine im Gegensatz zu der "Razor" View Engine verwenden sollte?

+2

TL; DR; Rasiermesser ist besser. – Joe

+0

Ja, ich brauche ein bisschen mehr von warum vs 1 gegen den anderen. Was stellt man zur Verfügung, was der andere nicht bietet?Ich beschränke mich auf eine Open-Source-Implementierung von Drittanbietern, die es in ein paar Jahren nicht geben wird, wenn ich Razor usw. verwende? –

+0

Siehe [verwandten SO-Thread] (http://stackoverflow.com/q/4702231/304683) – EdSF

Antwort

20

Es gibt keinen Unterschied in Bezug auf Abhängigkeiten von Dritten. ASPX ist in Ordnung, aber Razor ist besser, vor allem, weil es nicht im Weg ist.

Sie sollten Scott Guthries Blogpost Introducing "Razor" lesen.

Sie die Öffnungs- und Schließ Tags grundsätzlich ersetzen <% und %> mit einem @ Symbol, so wesentlich weniger Tastenanschläge, das Gleiche zu tun, das heißt

<%: Model.UserName %>

wird

@Model.UserName

und

wird

@foreach (string name in nameList) { .. }

Es ist ein wenig mehr zu bieten als das, aber nicht viel.

+1

Hier ist eine weitere gute Ressource, die Ihnen Trost geben sollte, ob Razor irgendwo hingeht: http: //www.dotnetrocks. com/default.aspx? showNum = 606 (.NET Rocks Episode mit Phil Haack auf Razor und MVC) –

+0

So im Wesentlichen Razor shorhands die <%= blah %> mit @blah? Wenn dies der Fall ist, bearbeiten Sie Ihre Antwort und ich werde akzeptieren, dass alles, was ich mit diesem Beitrag sehe, das ist, was es tut. –

+0

Sie haben es verstanden. Edit auf dem Weg ... –

1

Die "zusätzlichen dlls oder code" von Drittanbietern, auf die Sie sich verlassen würden, sind gut etabliert und absolut keine Hirnschützer. Du kopierst es einmal und vergisst es. Es ist auch nicht so, dass du sie jagen musst. Es ist sehr einfach Xcopy-Bereitstellung.

Wie Sie gesehen haben, verwendet die MS MVC-Website Razor. Die meisten (alle?) Der Seiten und Bücher, die ich lese, benutzen Razor.

Verwenden Sie Razor, und Sie werden viel mehr Hilfe als mit aspx in MVC finden.

+0

Meine Angst ist, dass Razor ist die neueste und coolste Technologie, die in der nächsten VS ersetzt werden wird. Ich wurde vorher verbrannt. Wenn ich die Technologie anpassen will, muss ich wissen, dass sie da ist und nicht durch eine "MS Razor 2" ersetzt wird. Was bietet Razor insbesondere über MVC von MS? –

+0

Razor * IS * Microsoft-Technologie. Razor V2 soll bereits ASP.NET MVC4 enthalten, aber es sollte keine Probleme mit der Abwärtskompatibilität geben - es ist eine Erweiterung der bestehenden Basis, keine neue Sprachsyntax. – Chris

+1

Dan P, ich weiß ganz genau, woher du kommst. Ich habe die ersten 7 Jahre meines .Net-Lebens damit verbracht, alles zu vermeiden, was "eingebaut" ist, weil ich oft von MSs neuesten und größten Iterationen von Datagrids, Web-Paradigmen oder Foundation-Klassen usw. gebrannt wurde. Aber heutzutage scheinen sie es wirklich mit MVC zu nageln. Ich tendiere dazu, mich vor dem Entity Framework oder Castle oder irgendetwas anderem, das mit der DB-Abstraktion zu tun hat, zu drücken. Aber die MVC-Sache scheint tot zu sein. –

4

Razor ist eine interne Microsoft-Erweiterung von ASP.NET MVC. Sie scheinen den Eindruck zu haben, dass Razor von der Community bereitgestellt wird oder ein Teil der MVC-Basiskomponenten ist, was völlig falsch ist. Razor bietet auch syntaktisch sauberen Code als ASPX.

+0

Also in deiner Gedankenreihe, wenn "Razor" eine MS-Implementierung von MVC ist, wird es mehr als wahrscheinlich gelingen, zur nächsten Version von VS zu gelangen? –

+0

Razor ist keine Visual Studio-Sache. Es ist ein Kernstück des ASP.NET MVC-Frameworks. Microsoft veröffentlicht Razor V2 mit ASP.NET MVC4, also wird es nirgendwo hin gehen. – Chris

+0

Razor ist Microsofts Antwort auf seine hässliche Cousine Spark (?). Web Forms gehen auch nicht weg, aber was beweist das? Ich habe noch kein einziges Argument gesehen, um Razor zu benutzen, abgesehen von der Tatsache, dass es der neueste "Trend" ist. Es öffnet die Tür zu den gleichen Spaghetti, die wir mit ASP 1.0 – IrishChieftain

-6

Razor ist die schlampigste mögliche Sache, die Sie zu Ihrem Markup tun könnten. Code und Markup gehören nicht in dieselbe Datei, Punkt. Es ist völlig außer mir, wie jemand solchen Wahnsinn empfehlen könnte.

+5

schreiben Razor nicht ermutigt Kombination von Code mit Markup mehr als jede andere View-Engine. Wenn Sie unter diesem Eindruck stehen, werden Sie wahrscheinlich falsch informiert. Das Kernkonzept in ASP.NET MVC besteht darin, dass Sie eine HtmlHelper-Erweiterung in einer separaten Klassendatei schreiben, wenn Sie die Ansicht mit codebasierter Logik erweitern möchten. – Chris

+0

Jedes Sample, das ich gesehen habe, enthält Code in die Ansicht - großes No-No. Hätte niemals erlaubt sein sollen. Das ist ein so umstrittenes Thema, dass wir sicher eine lebhafte Debatte haben werden ;-) – IrishChieftain

+1

@IrishCieftain Ich habe sehr gute Kenntnisse von MVVM Silverlight und WPF. Beim Wechsel zum Web ging ich davon aus, dass MVC die engste Korrelation war. Wenn Sie MVC ASP.NET MVC oder Razor nicht vorschlagen, was schlagen Sie vor? –