View
4.142
Download
1
Category
Preview:
DESCRIPTION
Introducción a ASP.NET y otras tecnologías asociadas
Citation preview
WorkshopASP.NET MVC
Día 1
Rodolfo FinochiettiMVP ASP.NET/IISLagash Systemsrodolfof@lagash.com@rodolfof
Agenda
• Arquitectura– Web– ASP.NET
• Introducción a ASP.NET MVC• Acciones y Rutas• Controladores• Vistas– Razor
• Model Binding
Arquitectura Web en .NET
Por que construir aplicacionesWeb: Es facil
Arquitectura Web
http://www.w3.org/TR/webarch
¿Cómo funciona HTTP?
ASP.NET APIs de Servicios para Aplicaciones
MembershipMembership Role ManagerRole Manager PersonalizationPersonalization
Site NavigationSite Navigation Database Caching
Database Caching
Health Monitoring
Health Monitoring
Arquitectura de ASP.NET
ASP.NET APIs de Servicios para Aplicaciones
MembershipMembership Role ManagerRole Manager PersonalizationPersonalization
Site NavigationSite Navigation Database Caching
Database Caching
Health Monitoring
Health Monitoring
ASP.NET “Page Framework”
Arquitectura de ASP.NET
Master Pages
Master Pages
Themes/Skins
Themes/Skins
Client Scripting
Client Scripting
LocalizationLocalization
ASP.NET APIs de Servicios para Aplicaciones
MembershipMembership Role ManagerRole Manager PersonalizationPersonalization
Site NavigationSite Navigation Database Caching
Database Caching
Health Monitoring
Health Monitoring
ASP.NET MVC
Arquitectura de ASP.NET
Model Binders
Model Binders
View Engines
View Engines
Mobile Render
Mobile Render
Ajax SupportAjax Support
Demo
Arquitectura ASP.NET
Introducción a
ASP.NET MVC
Modelo-Vista-Controlador
Model
ControllerView
Xerox PARC 1978http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
ASP.NET MVC
• Un framework para Web Development• Más control sobre el HTML– Más Web-Frendly
• Más testeable• Pensado para no ocular la naturaleza de la
arquitectura Web• Esta construido sobre en ASP.NET
¿Que ofrece?• SoC (Separation of Concerns)– TDD por default–Mantenibilidad
• Url y HTML mas limpio– SEO y REST friendly• /Usuarios/Buscar/Rodolfo
– CSS Friendly• <html> <div> <label> <span>
• Modelo de programación mas performante–No hay ViewState–No hay modelo de eventos
¿Como trabaja?Navego a
http://.../Productos/Listar
Se determina la ruta
El controller Productos es
creado
Un método Listar del
controller es invocado
Se ejecuta la logica del controller
Se dibuja la vista pasándole la
ViewData
Se dibujan Urls que apuntan a otras acciones
de otros controllers
Rutas
www.sitio.com/products/reports/1/06/2008
URLs amigables
• Legibles– www.sitio.com/products.aspx?
module=reports&productId=1&&month=6year=2008 – www.sitio.com/products/report/1/6/2008
• Predecibles– http://es.wikipedia.org/wiki/Lagash
Controlador – Uso Básico
• Escenarios, Objetivos y Diseño– Las URLs indican “acciones” del Controlador, no páginas – Las acciones deben declarase en el Controlador.– El controlador ejecuta lógica y elige la vista.
public ActionResult ShowPost(int id) { Post p = PostRepository.GetPostById(id); if (p != null) { View(p); } else { View("nosuchpost", id); }}
Demo
Rutas y Controladores
Vistas – Uso Básico
• Escenarios, Objetivos y Diseño:– Generan HTML u otro tipo de contenido.
• Helpers pre-definidos.
– Pueden ser .ASPX, .ASCX, .MASTER, etc.– Pueden reemplazarse con otras tecnologías:
• Template engines (NVelocity, Spark, …).• Formatos de salida (images, RSS, JSON, …).• Pueden definirse vistas Mock para testing.
– El controlador ofrece datos a la Vista• Datos Loosely typed o Strongly Typed .
¿Un View… que?
• Encargado de Renderizar vistas– HTML– Javascript
• Alternativa a “<% %>”
Objetivos de Razor
• Compacto• Sencillo• “Amigo del HTML”• ¡Ya conocemos el lenguaje!
Demo
Vistas y Razor
Model Binding
Enlazar automáticamente de elementos HTML a propiedades de un objeto (incluyendo su creación)
Binding manual
Binding automático
Demo
ModelosModel Binding
Work Time
Contacto
• Mail:– rodolfof@lagash.com
• Blogs:– http://shockbyte.net
• Twitter:– @rodolfof
¡Gracias!
Recommended