Pregunta

Me he dado cuenta de Scott Guthrie está empezando a Razor un < a href = "http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx"> poco justo en su blog, pero estoy simplemente no es tan seguro que es una buena opción para mi estilo.

Por supuesto que es un estilo bastante poco familiar para alguien que está muy acostumbrado a un "estándar" tipo de ASP.Net marcado (contenido de marcadores de posición y el código en línea), pero sólo se siente como una gran cantidad de páginas adicionales para gestionar y marcado menos clara a mí.

¿Cuáles son los sentimientos de otras personas en él? ¿Es algo que usted cree que debería ser considerado seriamente cuando el andamio nuevas páginas MVC o está tratando de resolver un problema que no existe?

¿Fue útil?

Solución

[Descargo de responsabilidad: yo soy uno de los desarrolladores de Microsoft en MVC y la maquinilla de afeitar, por lo que podría ser un poco sesgada:)]

Hemos diseñado Razor ser un lenguaje conciso de plantillas que utiliza sólo la cantidad mínima necesaria de los caracteres de control. Yo diría que una gran parte de sus puntos de vista pueden expresarse con menos caracteres que el mismo código utilizando el "tradicional" WebForms sintaxis.

Por ejemplo, el siguiente fragmento de código en la sintaxis ASPX:

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

puede ser expresado como sigue en la maquinilla de afeitar:

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

Mientras que la versión ASPX tiene 21 caracteres de transición (la <% y %>), la versión de la maquinilla de afeitar tiene sólo tres (@)

Yo diría que las ventajas de la maquinilla de afeitar son los siguientes:

  1. sintaxis concisa, que es muy similar a la forma en que escribe regularmente código C # (echa un vistazo a la siguiente entrada de blog reciente de Phil Haack comparando Asxp con la sintaxis Razor: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx )
  2. Automática HTML codificación de salida (que ayuda a protegerse de los ataques de inyección HTML)
  3. construido en (aunque no al 100%) la validación de su margen de beneficio que le ayuda a evitar las etiquetas desequilibradas

Los conceptos relacionados con páginas también el mapa fácilmente de lo que tiene en ASPX

  • Como se puede ver el código en línea se sigue permitiendo
  • Secciones (que puede ser opcional) son equivalentes a los marcadores de posición de contenido
  • Las páginas de diseño en lugar de páginas maestras
  • Los conceptos de vistas completas o parciales son los mismos
  • bloques @functions { ... } en lugar de <script runat="server"> ... </script>

Además de la maquinilla de afeitar tiene una serie de conceptos útiles que yo diría que son mejores que lo que está disponible en ASPX:

  • Funciones para @helper muy fácil creación de funciones que emiten marcado
  • @model palabra clave para especificar el punto de vista del tipo de modelo sin tener que escribir una directiva <%@ Page ... con el nombre completo de la clase

Me gustaría pensar que hemos abordado un problema real, que es para que pueda escribir concisa y vistas compatibles con los estándares y, al mismo tiempo que proporciona mayor facilidad que con las formas de código refactor común.

Por supuesto, no todo el mundo prefiere la sintaxis es la razón por la cual también estamos apoyando plenamente la opinión del motor ASPX. Además se puede extraer de la chispa y NHaml, que son dos motores de vista de tercera partes que disfrutan significativa siguiente comunidad. La siguiente entrada del blog tiene una buena comparación de las diferentes ofertas: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx

Otros consejos

En lo personal realmente aprecio la reducción en cómo se utilizan muchos caracteres de escape. Usando <% %> se vuelve muy tedioso si se compara con @{} y no es atractivo casi tan sintácticamente.

Además, escribiendo una definición general para el código subyacente y la página se simplifica a una sola @model model.

Como también se ha señalado marcind, no tener que incluir siempre runat=server es muy agradable también.

En general, realmente aprecian utilizando el motor de la maquinilla de afeitar y encontrar que no sólo hace las cosas más fáciles en mí para desarrollar, pero también hace que el código más fácil de leer.

Puede probar este convertidor . Para más información consultar esta entrada de blog .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top