Question

Je remarque Scott Guthrie commence à Razor un < a href = « http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx »> juste peu sur son blog, mais je suis tout simplement pas sûr que c'est un bon moyen pour mon style.

D'accord, c'est un style assez familier pour quelqu'un qui est assez habitué à un « standard » sorte de ASP.Net balisage (détenteurs de placer le contenu et le code en ligne), mais il se sent comme un grand nombre de pages supplémentaires pour gérer et balisage moins clair pour moi.

Quels sont les sentiments des gens sur elle? Est-ce quelque chose que vous croyez devrait être pris au sérieux lorsque des échafaudages de nouvelles pages MVC ou est-il juste essayer de résoudre un problème qui n'existe pas?

Était-ce utile?

La solution

[Avertissement: Je suis l'un des développeurs Microsoft sur MVC et Razor, donc je pourrais être un peu biaisé:)]

Nous avons conçu Razor être un langage concis de templating utilise uniquement la quantité nécessaire minimale de caractères de contrôle. Je dirais qu'une grande partie de vos points de vue peuvent être exprimés avec moins de caractères que le même code en utilisant la « traditionnelle » WebForms syntaxe.

Par exemple, le code suivant dans la syntaxe ASPX:

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

peut être exprimée comme suit Razor:

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

Alors que la version ASPX a 21 caractères de transition (la <% et %>), la version de rasoir a seulement trois (@)

Je dirais que les avantages de rasoir sont comme suit:

  1. syntaxe Concise, ce qui est très similaire à la façon dont vous écrivez code régulier C # (vérifier le billet de blog récents suivant par Phil Haack comparant ASXP avec la syntaxe Razor: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx )
  2. HTML automatique encodage de sortie (qui aide à vous protéger contre les attaques par injection html)
  3. Construit en (mais pas 100%) la validation de votre balisage qui vous permet d'éviter les balises asymétriques

Les concepts liés à la page-carte aussi facilement de ce que vous avez dans ASPX

  • Comme vous pouvez le voir code en ligne est encore autorisé
  • Les articles (qui peut être en option) sont équivalentes à des espaces réservés contenu
  • pages mise en page au lieu de pages Master
  • Les concepts de vues partielles et complètes sont les mêmes
  • blocs @functions { ... } au lieu de <script runat="server"> ... </script>

En outre Razor a un certain nombre de concepts utiles que je dirais sont mieux que c'est disponible dans ASPX:

  • Fonctions @helper pour la création très facile des fonctions qui émettent un balisage
  • @model mot-clé pour spécifier le type de modèle de votre point de vue sans avoir à écrire une directive <%@ Page ... avec le nom complet de la classe

Je me plais à penser que nous avons abordé un problème réel, ce qui est de vous permettre de plus facilement écrire concis et vues conformes aux normes tout en même temps, vous fournir des moyens de code commun Refactoriser.

Bien sûr, pas tout le monde préférera la syntaxe qui est la raison pour laquelle nous soutenons également pleinement le moteur de vue ASPX. En outre, vous pouvez vérifier Spark et NHaml, qui sont deux moteurs de vue 3ème partie qui jouissent d'importantes suivantes communautaire. Le billet de blog suivant a une bonne comparaison des différentes offres: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx

Autres conseils

Personnellement, j'apprécie vraiment la réduction de nombre de caractères d'échappement sont utilisés. L'utilisation <% %> devient très fastidieux par rapport à @{} et est loin d'être aussi attrayante syntaxiquement.

En outre, l'écriture d'une définition entière pour la codebehind et la page est simplifiée à une seule @model model.

Comme il est également noté marcind, ne pas avoir à toujours inclure runat=server est très agréable aussi.

Dans l'ensemble, j'apprécie vraiment en utilisant le moteur de rasoir et trouver non seulement il rend les choses sur moi de développer, mais rend également plus facile à lire le code.

Vous pouvez essayer ce convertisseur . Pour plus d'informations, consultez ce blog .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top