2009-05-12 54 views
13

Hay muchas preguntas en SO con respecto a los motores de vista en ASP.Net MVC, y sobre el uso de los "personalizados" en lugar del "predeterminado". Para mí, como programador aficionado, el término "Ver motor" es nuevo, y no he podido entender lo que significa. Entonces, mis preguntas son:¿Qué es un motor ASP.Net MVC View?

  1. ¿Qué es un motor de visualización?

  2. ¿Qué hace el motor de View y qué función desempeña en el patrón MVC? (Estrechamente relacionado con 1 ...)

  3. ¿Cuáles son las principales características/propiedades del motor de vista predeterminado que los programadores desean cambiar/evitar al cambiar a un motor de visualización diferente?

  4. ¿Cuáles son los principales beneficios de los otros motores de visión comunes que los desarrolladores buscan cuando eligen una versión diferente a la estándar? (He visto el nombre "Spark View Engine" un montón de veces, y apuesto a que también hay otros).

  5. ¿Cuándo (en qué situaciones) quisiera desarrollar mi propio motor de visualización?

Creo que eso es todo lo que quiero preguntar (por ahora). ¡Dame View Engines 101! =)

+0

Si esto fuera wiki de la comunidad, por favor avíseme. –

+0

No lo creo – TStamper

Respuesta

5

El "motor de vista" maneja la representación de la vista a html, xml o cualquier tipo de contenido para el cual se crea. Dentro de "MVC", sería un aspecto de la Vista (V).

Los motores de vista diferente tienen sintaxis diferentes, etc. para gestionar la representación. La decisión de usar otro motor de visualización es muy probable que sea muy específica del proyecto/programador. En algunos casos, pueden ver una limitación real o percibida del motor de vista predeterminado; en otros casos, puede ser simplemente un objetivo o enfoque de diseño diferente.

En lo que respecta a Spark, su objetivo es ser mucho más conciso que el motor de vista predeterminado y permanecer en sintaxis similar a HTML tanto como sea posible en lugar de caer en bloques de scripts de ASP.NET.

Como usuario final, es probable que la única vez que desee crear su propio motor de vistas sea nunca. ;) No es una tarea que deba tomarse a la ligera, y probablemente termine reimplementando la funcionalidad que ya existe en un motor de vistas existente.

Editar

OK. ¿Los archivos View.aspx son parte de View Engine o View Engine un conjunto de clases que ayudan a elegir que View.aspx (u otro tipo de respuesta ) que se debe representar? ¿Cómo funciona ?

El patrón MVC le indica que su modelo, vista y controlador serán "cosas" separadas. En ASP.NET MVC, el motor de vista predeterminado usa el marco ASP.NET existente, que incluye páginas maestras, archivos ASPX, etc. Spark hace algo similar, pero es un motor diferente, por lo que no funciona exactamente igual. Por lo tanto, en un sentido general, los archivos de vista no son específicos del motor, pero los archivos específicos, su distribución en el disco y su contenido son específicos del motor de vista.

+0

OK. Entonces, ¿los archivos View.aspx son parte del Motor de visualización, o es el Motor de visualización un conjunto de clases que ayudan a elegir qué View.aspx (u otro tipo de respuesta) que se debe representar? ¿Como funciona? –

1

Además de querer reemplazar por completo el motor de visualización (por ejemplo, Spark), también puede crear su propio motor de vista solo para realizar un pequeño cambio en el comportamiento del motor de vista predeterminado. Puede hacer esto creando un motor de vista nuevo que herede del motor predeterminado y anule algún comportamiento.

Un ejemplo común es ajustar dónde se ve el motor de vista en el disco duro para los archivos .aspx. Por ejemplo, es posible que desee crear un motor de vista que cambie automáticamente qué archivo view.aspx se usa en función de si el usuario está en un dispositivo móvil.

Ver Mobile Web Sites with ASP.NET MVC and the Mobile Browser Definition File para una implementación de ejemplo realmente buena de esto.

Actualización:

de Scott acaba de publicar un updated ViewEngine implementation que tiene importantes mejoras frente a la implementación inicial vinculado anteriormente.