Download - Razor vs Web Forms Paper Majo
RAZOR ENGINE VS WEB FORMS
INGENIERÍA DE SISTEMAS
PROYECTOS 1
PRESENTADO POR: MARÍA JOSÉ CHÁVEZ ESTRADA
Cajamarca, Abril Del 2012
DOCENTE: ING. SAMUEL MESTANZA ALCÁNTARA
Razor Enginee vs Web Forms
.
1
RAZOR ENGINE vs WEB FORMS
María José Chávez Estrada
e-mail: [email protected]
RESUMEN: En este documento se hablará acerca de
RAZOR el cual está diseñado para ser un motor de vista
alternativo para ASP.NET MVC. Inicialmente introducido
en WebMatrix y ahora incluido como parte de ASP.NET
MVC 3, asimismo RAZOR permite a los desarrolladores
reemplazar el anticuado <%%> de sintaxis con un
modelo de codificación mucho más limpio que se detalla
a continuación, sobre todo alrededor del símbolo @ sin
perder las características de HTML. Como nuevo
tecnología viene cargada de mejoras sobre tecnologías
antecesoras como las WEB FORMS, trayendo consigo
ventajas y desventajas que se explicaran a detalle.
PALABRAS CLAVE: WEB, RAZOR, Web Forms,
MVC, Compacto, expresivo y fluido.
1 INTRODUCCIÓN: ASP.NET MVC 3
ASP.NET MVC 3 es un marco de trabajo para la
construcción de aplicaciones escalables basadas
en estándares web utilizando patrones de diseño
bien establecidos y el poder del Framework de
ASP.NET.
ASP.NET MVC 3 se basa en ASP.NET MVC 1 y 2,
es la adición de grandes características que
simplifican el código.
El modelo de arquitectura Model-View-Controller
(MVC) separa una aplicación en tres componentes
principales: el modelo, la vista y el controlador. Fue
descrito por primera vez en 1979 por Trygve
Reenskaug, de los laboratorios de Xerox, en la
publicación: “Programación de Aplicaciones en
Smalltalk-80™: Como utilizar Modelo Vista
Controlador”.
La implementación de Microsoft ASP.NET MVC
proporciona una alternativa al modelo de
formularios Web Forms de ASP.NET para crear
aplicaciones web. ASP.NET MVC es un marco de
presentación de poca complejidad y fácil de testear
que, como las aplicaciones basadas en formularios
Web Forms, se integra con características de
ASP.NET como son las páginas maestras y la
autenticación basada en pertenencias
Figura 1: Modelo Vista Controlador
Desde su primera versión ASP.NET MVC ha
tenido el concepto de motor de vistas (View
Engine). Recapitulando: en ASP.NET MVC las
vistas realizan tareas sólo de presentación, no
contienen ningún tipo de lógica de negocio y no
Razor Enginee vs Web Forms
.
2
acceden a datos. Básicamente se limitan a mostrar
datos y a solicitar datos nuevos al usuario.
Si vienes del mundo de webforms, olvídate del
concepto de Web Controls: no existen en
ASP.NET MVC. No existe el drag and drop, no se
configura propiedades. Las vistas son básicamente
HTML. Y lo que no es HTML son pequeñas
porciones de código de servidor destinadas a
terminar generando HTML para mostrar
información.
El equipo que desarrolló ASP.NET MVC tuvo la
idea de permitir separar la sintaxis de servidor
usada del framework de ASP.NET MVC. ¿El
resultado? Lo que llamamos un motor de vistas de
ASP.NET MVC.
En las versiones 1 y 2, el framework viene con un
único motor de vistas, el llamado motor ASPX, que
usa los clásicos archivos .aspx como vistas de
ASP.NET MVC. Pero ¡ojo! aunque estemos
utilizando archivos .aspx, no son webforms (los
webcontrols no funcionan, no tenemos viewstate ni
el ciclo de vida de webforms y además es que son
vistas de MVC, por lo que sólo deben hacer tareas
de presentación). La sintaxis que usa el motor
ASPX es un poco extensa, es decir que se debe
escribir mucho para ciertas tareas: Existe una gran
cantidad de veces que debe usarse el tag <% y su
parejo %> para indicar dónde empieza y termina el
código de servidor.
Rápidamente empezaron a surgir motores de
vistas alternativos, realizados por la comunidad,
con la intención de tener sintaxis más claras para
nuestras vistas. Algunos ejemplos son Nhaml y
Spark.
Finalmente la versión 3 de ASP.NET MVC vino
acompañada de un nuevo motor de vistas, llamado
Razor. Eso sí, el motor ASPX puede seguir siendo
usado en ASP.NET MVC3, pero honestamente no
hay ninguna razón para hacerlo (salvo en casos de
migraciones, por supuesto): Razor es más claro,
sencillo e intuitivo.
2 RAZOR: A NEW VIEW ENGINE
Como vimos anteriormente ASP.NET MVC
siempre ha apoyado el concepto de "motores de
vista" - que son los módulos conectables que
implementan las diferentes opciones de sintaxis de
la plantilla.
El nuevo motor de vista RAZOR se ha optimizado
en torno a la generación de código HTML diseñado
para ser un motor de vista alternativo
para ASP.NET MVC.
Inicialmente introducido en WebMatrix y
ahora incluye como parte de ASP.NET MVC 3,
Razor permite a los desarrolladores reemplazar
el anticuado <%%> de sintaxis con un modelo de
codificación mucho más limpio, sobre todo
alrededor del símbolo @. Además, ofrece algunas
características excelentes para los escenarios de
la página maestra, al mismo tiempo sin perder el
acceso a las características con las que ya se está
familiarizado como los métodos de ayuda HTML.
Con el objetivo principal de aliviar el dolor en la
autoría de la vista, el motor de vista Razor ha
estado atacando a las siguientes características:
Razor Enginee vs Web Forms
.
3
Más compacto y más fácil de usar.
Razor tiene como objetivo reducir al
mínimo el número de caracteres y las
pulsaciones de teclas necesarias para
escribir un archivo de vista, en apoyo de
un flujo de trabajo rápido y fluido de
codificación. A diferencia de otras sintaxis
de plantilla existente, los desarrolladores
no tienen que interrumpir su codificación
para indicar de forma explícita los
bloques de servidores dentro del HTML. El
parser de Razor es lo suficientemente listo
como para inferirlo del código. Esto nos
permite una sintaxis más compacta y
expresiva convirtiéndola en limpia, rápida y
divertida de escribir.
Fácil de aprender:
Razor es fácil de aprender de forma rápida
y productiva con un mínimo de conceptos.
Basado en conocimientos de HTML.
No es un nuevo lenguaje:
Conscientemente se decidió no crear un
nuevo lenguaje imperativo con razor. En
su lugar hemos querido permitir a los
desarrolladores a utilizar su actual C # / VB
(u otro) y entregar una sintaxis de formato
de plantilla que permite un impresionante
flujo de trabajo y la construcción de HTML
con el idioma de su elección.
Funciona con cualquier editor de texto:
Razor no requiere una herramienta
específica y le permite ser productivo en
cualquier editor de texto simple y llano (en
el bock de notas funciona muy bien).
Tiene una gran Intellisense:
Razor ha sido diseñado para no requerir
un instrumento o un editor de código, que
contará con el apoyo de la finalización de
instrucciones dentro de Visual Studio.
Pruebas Unitarias:
Razor soporta las pruebas unitarias sin
necesidad de un controlador o un servidor
web, y se puede alojar en cualquier
proyecto de pruebas unitarias.
Elección y Flexibilidad:
Esta versión de ASP.NET MVC incluye un
nuevo "Add-> View" de diálogo que hace
que sea fácil elegir la sintaxis que se
desea utilizar al crear un archivo de vista la
nueva plantilla. Se le permitirá seleccionar
fácilmente cualquiera de los motores de
visualización disponibles que ha instalado
en su máquina - que le da la opción de
utilizar cualquier método vista que sea más
natural para usted.
Figura 2: Add view: Razor
Razor Enginee vs Web Forms
.
4
3 RAZOR: Sintaxis
Lo que más salta a la vista de Razor es que, a
diferencia del motor ASPX donde tenemos el tag
que inicia el código de servidor y el que lo termina,
sólo hay tag para iniciar código de servidor. El
motor Razor es lo suficientemente inteligente para
saber cuándo termina el código de servidor, sin
necesidad de que lo explicitemos.
Veamos la misma vista de antes, pero ahora
usando Razor:
Las diferencias saltan a la vista, ¿no? En Razor el
símbolo de la arroba (@) marca el inicio de código
de servidor. Y como comentaba antes, no hay
símbolo para indicar que se termina el código de
servidor: el motor Razor deduce cuando termina en
base al contexto.
Una de las técnicas que usa Razor para identificar
implicitamente cuándo termina un bloque de
código es buscar un tag que denote el principio de
una región contenedora. Esta técnica particular –
usando tags para definir bloques con código – es
uno de los principales ingredientes que hace a
Razor tan limpio y productivo en escenarios en los
que es necesaria la creación de HTML.
El uso de la @ funciona de dos maneras básicas:
@expresión: Renderiza la expresión en el
navegador. Así @item.Nombre muestra el
valor de ítem.Nombre. Es decir
@expresión equivale a <%: expresión %>
@{código}: Permite ejecutar un código que
no genera salida HTML. Es decir
@{código} equivale a <% Código %>
NOTITA:
Como hemos visto el motor Razor
interpreta cuando empieza y cuando
termina el código de servidor. Pero no
siempre lo consigue adecuadamente. Por
ejemplo:
@{ int a = 10; int b = 3; }
El valor de 10 - 3 es: @a-b
Genera el siguiente HTML:
El valor de 10 - 3 es: 10-b
Recordad la clave: el motor Razor espera
una y sólo una expresión detrás de la @.
Por eso debemos usar los paréntesis.
El valor de 10 - 3 es: @(a-b)
Múltiples líneas de contenido
Razor hace fácil poder tener varias líneas de
contenido en un mismo elemento HTML. Por
ejemplo, en el siguiente ejemplo el contenido del
@if está dentro de un elemento <p> de HTML – lo
que hace que Razor lo trate como contenido:
Razor Enginee vs Web Forms
.
5
En escenarios en los que necesitamos varias
líneas de contenido que no estén dentro de un
elemento HTML, podemos usar varias veces los
caractéres @:
Además, también podríamos usar un elemento
<text> para identificar explícitamente el contenido
a Razor:
El código anterior renderizará la misma salida que
la versión anterior con @:. Razor omitirá
automáticamente el tag <text> de la salida y
renderizará el contenido.
Comentarios
Para comentarios Razor ASP.NET, iniciar el
comentario con @ * y terminan con * @. El
comentario puede estar en una línea o varias
líneas
4 RAZOR: NUEVOS HELPERS
Razor también incluye nuevos ayudantes HTML,
tales como las siguientes:
Gráfico: Representa un gráfico, que ofrece
las mismas características que el control
de gráfico de ASP.NET 4.
WebGrid: Representa una cuadrícula de
datos, con la paginación y la funcionalidad
de la clasificación.
Crypto: Utiliza algoritmos de hash para
crear contraseñas adecuadamente salados
y hash.
WebImage: Representa una imagen.
WebMail: Envía un mensaje de correo
electrónico.
5 RAZOR: MEJORAS
Soporte para múltiples motores de vista
El Vista Agregar cuadro de diálogo en ASP.NET
MVC 3 le permite elegir el motor de la vista que
desea trabajar, y el nuevo proyecto de cuadro de
diálogo le permite especificar el motor de la vista
por defecto para un proyecto. Usted puede elegir el
motor de formularios Web Forms vista (ASPX),
maquinilla de afeitar, o un motor de la vista de
código abierto como el Spark , NHaml o NDjango .
Mejoras del controlador: Filtros de Acción Global
A veces se desea realizar la lógica, ya sea antes
se ejecuta un método de acción o después de una
acción se ejecuta el método. Para apoyar esto,
ASP.NET MVC 2, siempre y filtros de acción.
Filtros de acción son atributos personalizados que
proporcionan un medio para añadir declarativa de
pre-acción y el comportamiento posterior a la
Razor Enginee vs Web Forms
.
6
acción a determinados métodos de acción del
controlador. MVC 3 le permite especificar filtros
globales mediante la adición de ellos a
la GlobalFilters colección.
Nueva propiedad "ViewBag"
MVC 2 controladores son compatibles con
un ViewData que le permite pasar los datos a una
plantilla de vista usando una API en tiempo de
ejecución. En MVC 3, también puede utilizar la
sintaxis un poco más sencilla con la propiedad
ViewBag para lograr el mismo propósito. Por
ejemplo, en lugar de escribir ViewData ["mensaje"]
= "text", se puede escribir ViewBag.Message =
"text" . No es necesario para definir las clases
inflexible de tipos para utilizar el ViewBag. Debido
a que es una propiedad dinámica, usted puede en
lugar de simplemente obtener o establecer las
propiedades y las resolverá de forma dinámica en
tiempo de ejecución.
Figura 3: ViewBag
Los nuevos "tipos de ActionResult"
Los siguientes ActionResult tipos y métodos de
ayuda correspondientes son nuevas o mejoradas
de MVC 3:
HttpNotFoundResult. Devuelve un código
de estado HTTP 404 para el cliente.
RedirectResult. Devuelve una redirección
temporal (HTTP 302 código de estado) o
una redirección permanente (HTTP 301
código de estado), en función de un
parámetro booleano.
HttpStatusCodeResult. Devuelve un
código especificado por el usuario de
estado HTTP.
Las mejoras de JavaScript y Ajax
De forma predeterminada, el Ajax y los ayudantes
de validación de MVC 3 utiliza un enfoque discreto
JavaScript. JavaScript discreto evita la inyección
JavaScript en el HTML en línea. Esto hace que el
código HTML más pequeño y menos atestado y
hace más fácil que cambiar o personalizar las
bibliotecas de JavaScript.
Mejoras en el rutado URL
Se han introducido varias mejoras en el sistema de
rutado de urls. El rutado url es uno de los
componentes fundamentales de un framework web
MVC. Algunas de las mejoras del motor URL son:
Helper methods MapRoute() y IgnoreRoute(), con
estos métodos podremos registrar de una forma
más sencilla reglas de rutado. MapRoute() nos
permite una forma sencilla de añadir nuevas reglas
MVC Route a la colección de rutas. IgnoreRoute()
nos permite eliminar patrones de URL de esa
misma colección.
Razor Enginee vs Web Forms
.
7
6 WEB FORMS Y ASP.NET MVC:
Funcionamiento
ASP.NET Web Pages con sintaxis de Razor
proporciona una sintaxis de programación simple
para escribir código en páginas web donde el
código basado en servidor se incrusta en el
formato HTML de las páginas web. El código de
Razor se ejecuta en el servidor antes de que la
página se envíe al explorador. Este código de
servidor puede crear dinámicamente contenido de
cliente, es decir, puede generar formato HTML u
otro contenido sobre la marcha y, a continuación,
enviarlo al explorador junto con cualquier código
HTML estático que contenga la página.
Web Pages con sintaxis de Razor proporciona una
alternativa a formularios Web Forms de ASP.NET.
Las páginas de formularios Web Forms se centran
en controles de servidor web que generan código
HTML automáticamente y emulan el modelo de
programación basado en eventos usado para
aplicaciones cliente. En cambio, las páginas de
Razor funcionan más directamente como páginas
HTML estándar, donde el propio usuario puede
crear virtualmente todo el formato HTML y, a
continuación, agregar la funcionalidad alrededor de
ese formato usando el código del servidor.
En general, las páginas de Razor son más ligeras
que las páginas de los formularios Web Forms. Por
esa razón y porque la sintaxis es simple, Razor
puede ser más fácil de aprender para los
programadores y más rápido para desarrollar
páginas web dinámicas.
Las páginas web que incluyen contenido de Razor
tienen una extensión de archivo especial (.cshtml o
.vbhtml). El servidor reconoce estas extensiones,
ejecuta el código que está marcado con sintaxis de
Razor y, a continuación, envía la página resultante
al explorador.
7 ASP.NET MVC vs WEB FORMS:
Comparación
ASP.NET simplifica diversas tareas diarias y, lo
que es más importante, habilitados a los
programadores trabajan en un nivel mayor de
abstracción. Esto permite puedan centrarse más
en las funciones principales de la aplicación Web
que en las tareas comunes alrededor de diseño de
la página Web.
Basada en controles de servidor, ASP.NET permite
a los programadores generar sitios Web y
aplicaciones con conocimientos HTML y JavaScript
mínima de mundo real. El modelo de ASP.NET se
denomina formularios Web Forms y claramente se
inspiró por el modelo escritorio de Windows Forms
(en vez profundamente inspirado por la filosofía de
desarrollo rápido de aplicaciones Visual Basic).
Por lo tanto, ¿por qué Microsoft versión "otro"
marco ASP.NET, denominado ASP.NET MVC?
Ahora que Asp.Net es mucho más corriente en el
trabajo, se hace la pregunta una y otra vez en
cuanto a ¿cuál debe ser utilizado durante el
desarrollo de una aplicación Web?, Veamos los
pros y contras de formularios Web Forms de
ASP.NET y ASP.NET MVC.
Veamos el análisis FODA para cada uno:
Razor Enginee vs Web Forms
.
8
Asp.Net MVC FODA
Fortalezas
Proporciona un control preciso
sobre HTML representado.
Limpiador HTML generado.
La separación entre la interfaz de usuario
superior y el código.
Es más fácil de realizar pruebas unitarias.
Puede soportar múltiples motores de vista.
El tamaño típico de la página es pequeña.
Fácil integración con frameworks como
jQuery.
Debilidades
No es dirigida por eventos.
No ViewState.
Requiere familiarizarse con el patrón MVC.
Oportunidades
Permite Test Driven Development (TDD) -
que está construido con TDD, por lo
que es mucho más fácil escribir casos de
prueba de unidad y para interceptar el flujo
del programa.
Permite la reutilización de los mismos
modelos para presentar diferentes
interfaces de usuario.
Amenazas
Mayor aceleración y el tiempo de
formación requerido para los
desarrolladores con experiencia limitada o
inexistente en el desarrollo de aplicaciones
web.
Razor Enginee vs Web Forms
.
9
Asp.Net WebForms FODA
Fortalezas
Proporciona capacidades RAD muy
buenos para el desarrollo.
Gran compatibilidad con el diseñador en
Visual Studio.
La facilidad de desarrollo para aplicaciones
empresariales de datos pesados.
Muy ricas bibliotecas de control y apoyo de
proveedores de terceros.
Un familiar modelo orientado a eventos, en
comparación con el desarrollo de
Windows Forms, y tan fácil para los
desarrolladores para recoger.
Debilidades
Lógica de interfaz de usuario, junto con el
código, y por lo tanto es difícil de separar.
Más difícil de probar la unidad, tan difícil
de utilizar TDD.
Páginas pesadas debido a la gestión del
estado de la vista.
Oportunidades
Genial en la creación de prototipos rápidos
para aplicaciones de negocios. Esto es
muy útil cuando se trata de mostrar una
prueba rápida de los conceptos a los
clientes.
Amenazas
Más difícil de adoptar vistas de interfaz de
usuario, a pesar de los distintos
marcos disponibles (las páginas
principales, temas, etc.)
Razor Enginee vs Web Forms
.
10
Figura 4: WebForms vs MVC
Con todo, ASP.NET Web Forms y ASP.NET MVC
son funcionalmente equivalentes en el sentido de
que un equipo cualificado puede correctamente
utilizar cualquiera para crear cualquier solución
Web.
Generalizando, debería decir que formularios Web
Forms abarca la filosofía de RAD (Rapid Aplication
Development), mientras que ASP.NET MVC está
orientada a TDD (Test Driven Development).
En los formularios Web Forms, simplemente no
tiene la flexibilidad de ASP.NET MVC. Esto es una
limitación es true. ASP.NET MVC está diseñado
con capacidad de prueba.
Consideraciones Finales:
Formularios Web Forms ASP.NET y ASP.NET
MVC no son competidores en el sentido de que se
debe para reemplazar la otra. Tendrá que elegir
uno, pero diferentes aplicaciones pueden forzar
realizar distintas opciones.
Formularios Web Forms es difícil probar.
ASP.NET MVC requiere administrar la
generación de HTML en un nivel más
detallado.
ASP.NET MVC no es la única manera para
obtener SoC en ASP.NET.
Formularios Web Forms permite ir
aprendiendo a medida.
ViewState se puede controlar o
deshabilitar.
ASP.NET MVC expone arquitectura Web.
ASP.NET MVC se diseñó con capacidad
de prueba y la inserción de dependencia
en la cuenta.
ASP.NET MVC le hacia un mejor diseño
del código.
ASP.NET MVC es joven y carece de un
modelo de componente.
8 CONCLUSIONES
Hemos visto la sintaxis básica del motor de vistas
Razor, y las principales consideraciones que
debemos tener presentes.
Entonces "Razor" proporciona una nueva y
gran visión de motor opción que es más
sencillo para el código centrado en
plantillas. Es un flujo de trabajo de
Razor Enginee vs Web Forms
.
11
codificación que es rápido, expresivo y
divertido. Su sintaxis es compacto y
reduce la escritura, mientras que al mismo
tiempo, la mejora de la legibilidad del
conjunto de su marcado y el código.
También hemos visto que hay ventajas y
desventajas en formularios Web Forms y
ASP.NET MVC. Sin embargo, muchos
desarrolladores, parecen favorecer
ASP.NET MVC porque representa la única
forma de obtener SoC y capacidad de
prueba en sus aplicaciones.
Es esencial entender las diferencias
estructurales entre los marcos de modo
que puede tomar una decisión correcta.
Con todo, ASP.NET Web Forms y
ASP.NET MVC son funcionalmente
equivalentes en el sentido de que un
equipo calificado puede utilizar
correctamente cualquiera para crear
cualquier solución Web.
Hay dos consideraciones importantes para
elegir entre los dos:
Test Driven Development: La vida
sería mucho más fácil de utilizar
MVC.
Data Driven Aplication: la vida
sería mucho más fácil utilizando
WebForms si la aplicación es de
datos pesados.
Para finalizar una cosilla: Ambos motores
de vistas (ASPX y Razor) se pueden usar
en MVC3 de forma simultánea. El motor de
ASP.NET MVC intentará encontrar primero
una vista .aspx y si no la encuentra
buscará una vista Razor (.cshtml ).
9 REFERENCIAS
[1] ASP.NET Web Pages - Adding Razor Code
http://www.w3schools.com/aspnet/webpages_ra
zor.asp
[2] Desarrollo en Modelo Vista Controlador en C#
con ASP.NET MVC3
Ultima actualización: Agosto 2011
n-modelo-vista-controlador-en-c-con-aspnet-
mvc3
[3] Tutorial: Crear un sitio web con sintaxis de
Razor en Visual Studio
http://msdn.microsoft.com/es-
es/library/gg606533.aspx
[4] Microsoft WebMatrix: Crear web con
ASP.NET RAZOR
Ultima actualización: Nov 30, 2010
rosoft-WebMatrix-Crear-web-con-ASPNET-RAZOR
[5] Experience ASP.NET MVC 3 Beta – the Razor
View Engine
Ultima actualizacion : Diciembre 2011
http://danhartshorn.com/2011/12/experience-asp-
net-mvc-3-beta-the-razor-view-engine/
[6] Razor vs Webforms view engine
Ultima actualizacion: Marzo 2011
http://stackoverflow.com/questions/5261124/razor-
vs-webforms-view-engine-for-new-asp-net-mvc-3-
site
Razor Enginee vs Web Forms
.
12
[7] Experience ASP.NET MVC 3 Beta - the Razor
View Engine
Ultima actualizacion: Noviembre del 2010
http://dotnetslackers.com/articles/aspnet/Experienc
e-ASP-NET-MVC-3-Beta-the-Razor-View-
Engine.aspx#s19-create-custom-helper-method
[8] Introduction to ASP.NET Web Programming
Using the Razor Syntax
Ultima actualizacion : Junio del 2010
http://www.asp.net/web-pages/tutorials/basics/2-
introduction-to-asp-net-web-programming-using-
the-razor-syntax
[9] El motor de vistas Razor
Ultima actualización: Mayo del 2011
http://www.desarrolloweb.com/articulos/motor-
vistas-razor-dotnet.html
[10] Razor View Engine para ASP.NET MVC 3
Ultima actualizacion : Febrero 2011
http://www.returngis.net/2011/02/razor-view-
engine-para-asp-net-mvc/
[11] ASP.NET MVC 3: Sintaxis de Razor @: y el
tag text
Ultima actualización: Enero 2011
http://speakingin.net/2011/01/30/asp-net-mvc-3-
sintaxis-de-razor-y/
[12] ¿Webforms y ASP.NET MVC juntos? Pues
claro!
Ultima actualización: Mayo 2011
http://geeks.ms/blogs/etomas/archive/2011/05/13/1
91-webforms-y-asp-net-mvc-juntos-pues-
claro.aspx
[13] Introducing “Razor” – a new view engine for
ASP.NET
Ultima actualizacion : Julio del 2010
http://weblogs.asp.net/scottgu/archive/2010/07/02/i
ntroducing-razor.aspx
[14] ASP.NET MVC 3
http://www.asp.net/mvc/mvc3#BM_TheRazorViewE
ngine
[15] MVC 3 con Razor ~ Usando JQuery y
Unobtrusive AJAX
Ultima actualización : Febrero 2011
http://cells.puertadeenlace.net/post/6-MVC-3-con-
Razor-7e-Usando-JQuery-y-Unobtrusive-
AJAX.aspx
[16] Choosing Between WebForms and MVC
http://blog.gadodia.net/choosing-between-
webforms-and-mvc/