Frage

merke ich, Scott Guthrie auf Erwähnung beginnt Razor a < a href = „http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx“> gutes Stück auf seinem Blog, aber ich bin nur nicht so sicher, dass es eine gute Passform für meinen Stil ist.

Zugegeben ist es ein ziemlich ungewohnter Stil für jemanden, der ziemlich zu einem „Standard“ Art von ASP.Net Markup (Inhalt Platzhalter und Inline-Code) verwendet wird, aber es fühlt sich einfach wie eine Menge von zusätzlichen Seiten zu verwalten und weniger klar Markup zu mir.

Was sind andere Völker Gefühle auf sie? Ist es etwas, dass Sie ernsthaft in Betracht gezogen werden, glauben soll, wenn neue MVC Seiten Gerüste oder ist es nur versuchen, ein Problem zu lösen, das gar nicht existiert?

War es hilfreich?

Lösung

[Disclaimer: Ich bin einer des Microsoft-Entwicklers auf MVC und Razor, so dass ich ein bisschen voreingenommen sein könnte:)]

Wir Razor entworfen nur eine kurze Template-Sprache, dass Anwendungen die minimal notwendige Menge an Steuerzeichen zu sein. Ich würde sagen, dass große Teile Ihrer Ansichten können mit weniger Zeichen als der gleichen Code mit dem „traditionellen“ WebForms Syntax ausgedrückt werden.

Zum Beispiel des folgenden Code-Schnipsel in ASPX Syntax:

<% if(someCondition) { %>
  <ol>
  <% foreach(var item in Model) { %>
     <li><%: item.ToString() %></li>
  <% } %>
  </ol>
<% } %>

Kann ausgedrückt werden, wie in Razor folgt:

@if(someCondition) {
   <ol>
   @foreach(var item in Model) {
      <li>@item.ToString()</li>
   }
   </ol>
}

Während die ASPX Version 21 Übergangs Zeichen hat (die <% und %>), die Razor-Version hat nur drei (@)

Ich würde sagen, dass die Vorteile von Razor sind wie folgt:

  1. Concise Syntax, die die Art und Weise sehr ähnlich ist, dass Sie regelmäßig C # -Code schreiben (überprüfen Sie den folgenden aktuellen Blog-Beitrag von Phil Haack Vergleich Asxp mit Razor-Syntax: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx )
  2. Automatische HTML-Codierung der Ausgabe (die Sie von HTML-Injection-Angriffe schützen hilft)
  3. gebaut (wenn auch nicht 100%) Validierung Ihrer Markup, das hilft Ihnen, unausgeglichen Tags vermeiden

Die seitenbezogenen Konzepte Karte auch leicht von dem, was Sie in ASPX haben

  • Wie Sie Inline-Code sehen kann, ist nach wie vor erlaubt
  • Sektionen (die optional sein können) sind äquivalent zu Inhalt Platzhalter
  • Layout-Seiten statt Masterseiten
  • Die Konzepte von Voll- und Teilansichten sind die gleichen
  • @functions { ... } Blöcke statt <script runat="server"> ... </script>

Darüber hinaus hat Razor eine Reihe von nützlichen Konzepten, ich würde sagen, ist besser als das, was in ASPX verfügbar:

  • @helper Funktionen für wirklich einfache Erstellung von Funktionen, die emit Markup
  • @model Schlüsselwort für Ihre Ansicht des Modelltypen Angabe ohne eine <%@ Page ... Richtlinie mit den vollständigen Klassennamen schreiben

Ich würde gerne glauben, dass wir ein echtes Problem in Angriff genommen haben, die Sie leichter Schreib prägnant und standardkonformen Ansichten zu ermöglichen ist, während zur gleichen Zeit, die Sie mit Möglichkeiten, um refactor gemeinsamen Code bereitstellt.

Natürlich nicht jeder wird die Syntax bevorzugt weshalb wir sind vollständig auch die ASPX-Ansicht-Engine unterstützt. Darüber hinaus können Sie Funken und NHaml überprüfen, die zwei Motoren Ansicht 3rd-Party sind, die erhebliche Gemeinschaft folgende genießen. In der folgenden Blog-Post hat einen guten Vergleich der verschiedenen Angebote: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx

Andere Tipps

Persönlich schätze ich wirklich die Verringerung, wie viele Escape-Zeichen verwendet werden. <% %> Mit bekommt sehr mühsam im Vergleich zu @{} und fast nicht als syntaktisch ansprechend.

Darüber hinaus eine ganze Definition für die Code-Behind-Schreiben und Seite an einen einzigen @model model vereinfacht.

Wie auch durch marcind erwähnt, nicht mit immer sind runat=server auch sehr schön ist.

Insgesamt Ich schätze die Razor-Engine und finden es nicht nur die Dinge einfacher macht auf mich, sondern entwickeln auch macht Code leichter zu lesen.

Sie können versuchen, diesem Konverter . Weitere Informationen erhalten Sie dieses Blog-Post .

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