SlideShare ist ein Scribd-Unternehmen logo
1 von 30
24.01.2017
ASP.NET MVC
Core
{
“title”: “Developer”,
“awards”: [“mvp”],
“twitter”: “@eiximenis”,
“blog”: “http://geeks.ms/etomas”
“work” : {
“name”: “Plain Concepts”,
“office”: “BCN”,
“url”: “http://www.plainconcepts.com”
}
}
Eduard Tomàs
#NETCore2017 2
• MVC Core mantiene el mismo modelo de desarrollo que MVC5
• Vistas (Razor), Controladores, Acciones, Resultados de acción
• Convenciones
• Enrutamiento (tabla de rutas + enrutamiento por atributos)
• Si sabes MVC5 el salto inicial a MVC Core no es muy complejo
• Misma filosofía
Lo que es (casi) igual
#NETCore2017 3
(COMPARÁNDOLO CON MVC5, CLARO)
• Razor Tag Helpers
• Razor View Components
• Unificación MVC – WebApi
• Convenciones personalizadas
Algunas cosas que son distintas
#NETCore2017 4
(Y LO QUE VEREMOS HOY)
• MVC Core se alinea con las tendencias front modernas
• Directorio wwwroot donde se despliega la app
• Ciclo de trabajo usando npm, gulp, bower, …
• Visual Studio 2015/2017 tiene gran soporte para esas herramientas
• Fácil uso con herramientas externas
La gran diferencia
#NETCore2017 5
(Y LO QUE DEBERÍAS IR VIENDO INCLUSO EN MVC5)
• Muchas de las diferencias son de ASP.NET Core, no de MVC Core:
• Seguridad
• Logging
• Gestión de errores
• Configuración
• …
MVC Core es un middleware core
#NETCore2017 6
(¡SI CONOCES OWIN/KATANA ESTÁS DE SUERTE!)
Los Tag Helpers son etiquetas Razor
personalizadas que permiten encapsular
código Razor
Parecidos a los helpers tradicionales, pero
más potentes
Razor TAG
HELPERS
#NETCore2017 7
INTEGRANDO HELPERS CON MÁS FACILIDAD
Demo: Creando
un Tag Helper
8
• Mayor integración con herramientas de diseño
• Heredan de la clase TagHelper
• Se pueden redefinir etiquetas HTML existentes
• Una etiqueta HTML puede ser o no un Tag Helper en función de sus
atributos
• Tienen conocimiento de su contenido
• Directiva @addTagHelper para importarlos
Razor Tag Helpers
#NETCore2017 9
(LAS CLAVES)
Formularios más claros
#NETCore2017 10
YA NO MÁS @HTML…. (CASI)
<form asp-controller="Account" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form-
horizontal">
<h4>Use a local account to log in.</h4>
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Email" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Email" class="form-control" />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Password" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="Password" class="form-control" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
</div>
<p>
<a asp-action="ForgotPassword">Forgot your password?</a>
</p>
</form>
Demo: Tag
Helper repeater
11
Los view components son el equivalente a las
acciones hijas de MVC5
Invocadas desde Razor
Muestran UI parcial con lógica de negocio
VIEW
COMPONENTS
#NETCore2017 12
YA NO MÁS ACCIONES HIJAS
• Heredar de ViewComponent
• Definir método Invoke (o InvokeAsync) que retorna IViewComponentResult
• Parámetros libres (método Invoke no es override).
• Vista Default.cshml en /Views/Shared/Components/<Componente>
• Invocar desde Razor
• @Component.Invoke(“nombre”, new {<parámetros>})
View Components
#NETCore2017 13
(LAS CUATRO COSAS A SABER)
• Bonus 1.1: Invocar view component como tag helper
• <vc:nombre attr=“value” …></vc:nombre>
Demo: View
Components
14
WebApi desaparece y se integra en MVC
Core
No más ApiController ni clases duplicadas
El model binding de MVC Core es una
mezcla del de MVC5 y WebApi 2
MVC Y WEBAPI
UNIFICADOS
#NETCore2017 15
¡NO MÁS WEBAPI Y MVC!
1. Si el controlador es un controlador de API:
1. Un solo parámetro complejo con [FromBody]
2. N parámetros simples que irán en URL
2. Si el controlador es un controlador de Web:
1. Tantos parámetros simples o complejos como se quiera
2. No usar [FromBody]
Model binding unificado
#NETCore2017 16
(LAS REGLAS PARA NEWBIES)
Demo: Model
Binding
17
• El content-type de la petición determina el model binding a usar
• Usar application/x-www-form-urlencoded usa model binding a lo MVC
• Usar application/json o text/xml usa model binding a lo WebApi
• Otros content-types usarán el model binding especificado por el
desarrollador
Model binding unificado
#NETCore2017 18
(LAS CLAVES AVANZADAS)
• Parámetros son leídos por value providers
• Parámetros son enlazados por model binders
• Un mismo parámetro puede ser enlazado múltiples veces
• Un mismo parámetro puede ser enlazado desde URL o desde el cuerpo de
la petición
• Se puede enlazar más de un parámetro desde la URL
• Se puede enlazar más de un parámetro desde el cuerpo de la petición
Model binding a lo MVC
#NETCore2017 19
(LO QUE DEBEMOS SABER)
• Parámetros de URL son leídos por value providers
• Parámetros de URL son enlazados por model binders
• Se puede enlazar más de un parámetro desde la URL
• Un mismo parámetro de URL puede ser enlazado varias veces
• Solo un parámetro puede ser enlazado desde el cuerpo de la petición
• Leído y enlazado a partir de un InputFormatter
• El parámetro enlazado a partir del cuerpo de la petición debe estar
marcado con [FromBody]
Model binding a lo WebApi
#NETCore2017 20
(LO QUE DEBEMOS SABER)
Demo: Custom
InputFormatter
21
• Integrada en aquellos action results que heredan de ObjectResult
• Usa la cabecera Accept de la petición
• Se puede forzar un formato con [Produces]
• La respuesta es generada por un OutputFormatter
• Podemos crear OutputFormatters nuevos para dar soporte a nuevos
formatos
Negociación de contenido
#NETCore2017 22
(O COMO DARLE AL CLIENTE LO QUE PIDE)
• Si no hay un OutputFormatter para el tipo especificado el fallback por
defecto es JSON
• Se puede añadir el HttpNotAcceptableOutputFormatter que devolverá un
406
Negociación de contenido
#NETCore2017 23
(UN PAR DE COSILLAS MÁS…)
services.AddMvc().Configure<MvcOptions>(options =>
{
options.OutputFormatters.Insert(0, new HttpNotAcceptableOutputFormatter());
}
• En MVC5 / WebApi2 si se devolvía un null ese era serializado
Un poco más restful
#NETCore2017 24
(DOS DETALLITOS…)
• En MVC Core eso devuelve un 204 (No Content)
• Las cadenas son devueltas usando text/plain
• Podemos modificar las convenciones por defecto y agregar
convenciones nuevas
• ¿Es buena idea modificar las convenciones? …
• Habilita escenarios interesantes
• Implementar IApplicationModelConvention
• Podemos agregar restricciones implementando
IActionConstraintMetadata
Convenciones propias
#NETCore2017 25
(UN GRAN PODER CONLLEVA UNA GRAN RESPONSABILIDAD)
Demo: Convenciones
propias
26
• Empieza ya a usar npm, gulp y similares.
• Olvida los bundles de MVC
• Usa los IHttpResult de WebApi2.
• Olvida el enrutado por verbo de WebApi.
• Usa enrutado por atributos en WebApi.
• Usa WebApi en modo OWIN.
• Usa inyección de dependencias
• Evita devolver datos desde MVC5. Usa WebApi.
De MVC5 a MVC Core
#NETCore2017 27
(CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
• Sustituye Razor Helpers por Tag Helpers
• Sustituye acciones hijas por View Components
• Elimina [FromUri] en ApiControllers y verifica los bindings
• Y por supuesto: Valora si vale la pena migrar. ¡Recuerda todo lo que no
es realmente MVC Core pero sí ASP.NET Core!
De MVC5 a MVC Core
#NETCore2017 28
(CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
¡GRACIAS!
@eiximenis
etomas@plainconcepts.com
www.plainconcepts.com
MADRID
Paseo de la Castellana 163, 10º
28046 Madrid. España
T. (+34) 91 5346 836
BILBAO
Nervión 3 , 6º
48001 Bilbao. España
T. (+34) 94 6008 168
BARCELONA
Av. Josep Tarradellas 10, 6º 1ª
08029 Barcelona. España
T. (+34) 93 3607 114
SEVILLA
Avenida de la innovación s/n
Edificio Renta Sevilla, 3º A
41020 Sevilla. España
DUBAI
Dubai Internet City. Building 1
73030 Dubai. EAU
T. (+971) 4 551 6653
LONDON
Impact Hub Kings Cross
24B York Way, N1 9AB
London. UK
SEATTLE
1511, Third Ave
Seattle WA 98101. USA
T. (+1) 206 708 1285

Weitere ähnliche Inhalte

Was ist angesagt?

ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCriojadotnet
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)Senior Dev
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Eduard Tomàs
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoGonzalo C.
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)wildtango
 
Mejorando interfaz de SharePoint 2010 con Silverlight 4
Mejorando interfaz de SharePoint 2010 con Silverlight 4Mejorando interfaz de SharePoint 2010 con Silverlight 4
Mejorando interfaz de SharePoint 2010 con Silverlight 4SolidQ
 
Extendiendo SharePoint Online con el nuevo modelo de apps
Extendiendo SharePoint Online con el nuevo modelo de appsExtendiendo SharePoint Online con el nuevo modelo de apps
Extendiendo SharePoint Online con el nuevo modelo de appsFabian Imaz
 
Cross-premises: integrando redes e infraestructura con Microsoft Azure
Cross-premises: integrando redes e infraestructura con Microsoft AzureCross-premises: integrando redes e infraestructura con Microsoft Azure
Cross-premises: integrando redes e infraestructura con Microsoft AzurePlain Concepts
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Oscar Gensollen
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend FrameworkIrontec
 
Analitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móvilesAnalitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móvilesPlain Concepts
 

Was ist angesagt? (20)

ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Mvc4 Intro
Mvc4 IntroMvc4 Intro
Mvc4 Intro
 
ASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVCASP .NET MVC: Desarrollo web con el patrón MVC
ASP .NET MVC: Desarrollo web con el patrón MVC
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
 
ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1ASP.NET MVC Workshop Día 1
ASP.NET MVC Workshop Día 1
 
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_unoWeb matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
Web matrix 2_desarrollo_web_gratis_simple_abierto_todo_en_uno
 
Mvc
MvcMvc
Mvc
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)
 
Mejorando interfaz de SharePoint 2010 con Silverlight 4
Mejorando interfaz de SharePoint 2010 con Silverlight 4Mejorando interfaz de SharePoint 2010 con Silverlight 4
Mejorando interfaz de SharePoint 2010 con Silverlight 4
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Extendiendo SharePoint Online con el nuevo modelo de apps
Extendiendo SharePoint Online con el nuevo modelo de appsExtendiendo SharePoint Online con el nuevo modelo de apps
Extendiendo SharePoint Online con el nuevo modelo de apps
 
Cross-premises: integrando redes e infraestructura con Microsoft Azure
Cross-premises: integrando redes e infraestructura con Microsoft AzureCross-premises: integrando redes e infraestructura con Microsoft Azure
Cross-premises: integrando redes e infraestructura con Microsoft Azure
 
Perfiles en maven
Perfiles en mavenPerfiles en maven
Perfiles en maven
 
Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5Desarrollo de Aplicaciones Web con ASP.NET MVC5
Desarrollo de Aplicaciones Web con ASP.NET MVC5
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend Framework
 
Filtrado de recursos en Maven
Filtrado de recursos en MavenFiltrado de recursos en Maven
Filtrado de recursos en Maven
 
Analitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móvilesAnalitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móviles
 

Andere mochten auch

Net core path by Ibon Landa
Net core path by Ibon LandaNet core path by Ibon Landa
Net core path by Ibon LandaPlain Concepts
 
Realtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo Cabello
Realtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo CabelloRealtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo Cabello
Realtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo CabelloPlain Concepts
 
Entity Framework Core by Unai Zorrilla
Entity Framework Core by Unai ZorrillaEntity Framework Core by Unai Zorrilla
Entity Framework Core by Unai ZorrillaPlain Concepts
 
Testing Xamarin Test Cloud
Testing Xamarin Test CloudTesting Xamarin Test Cloud
Testing Xamarin Test CloudPlain Concepts
 
Diseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataformaDiseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataformaPlain Concepts
 
Microsoft Intune y Gestión de Identidad Corporativa
Microsoft Intune y Gestión de Identidad Corporativa Microsoft Intune y Gestión de Identidad Corporativa
Microsoft Intune y Gestión de Identidad Corporativa Plain Concepts
 
La nueva Intranet es Office 365
La nueva Intranet es Office 365La nueva Intranet es Office 365
La nueva Intranet es Office 365Plain Concepts
 
Identidad híbrida con Azure Active Directory
Identidad híbrida con Azure Active DirectoryIdentidad híbrida con Azure Active Directory
Identidad híbrida con Azure Active DirectoryPlain Concepts
 
HTML Tour - Aplicaciones móviles multiplataforma
HTML Tour - Aplicaciones móviles multiplataformaHTML Tour - Aplicaciones móviles multiplataforma
HTML Tour - Aplicaciones móviles multiplataformaPlain Concepts
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5Plain Concepts
 
Windows Intune: Sistemas bajo control, sin ápice de dolor.
Windows Intune: Sistemas bajo control, sin ápice de dolor.Windows Intune: Sistemas bajo control, sin ápice de dolor.
Windows Intune: Sistemas bajo control, sin ápice de dolor.Plain Concepts
 
Identidad: los misterios del metaverso con Forefront Identity Manager
Identidad: los misterios del metaverso con Forefront Identity ManagerIdentidad: los misterios del metaverso con Forefront Identity Manager
Identidad: los misterios del metaverso con Forefront Identity ManagerPlain Concepts
 
DevOps: Continuous Delivery and Windows Azure
DevOps: Continuous Delivery and Windows AzureDevOps: Continuous Delivery and Windows Azure
DevOps: Continuous Delivery and Windows AzurePlain Concepts
 
.Net Standard Libraries and Xamarin
.Net Standard Libraries and Xamarin.Net Standard Libraries and Xamarin
.Net Standard Libraries and XamarinJames Montemagno
 
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)citizenmatt
 
.NET Standard - Under the Hood
.NET Standard - Under the Hood.NET Standard - Under the Hood
.NET Standard - Under the HoodImmo Landwerth
 
.NET Standard - Introduction
.NET Standard - Introduction.NET Standard - Introduction
.NET Standard - IntroductionImmo Landwerth
 
Single Sign On e IdPs: Active Directory Federation Services (ADFS)
Single Sign On e IdPs: Active Directory Federation Services (ADFS)Single Sign On e IdPs: Active Directory Federation Services (ADFS)
Single Sign On e IdPs: Active Directory Federation Services (ADFS)Plain Concepts
 
Seguridad y protección en Office 365
 Seguridad y protección en Office 365 Seguridad y protección en Office 365
Seguridad y protección en Office 365Plain Concepts
 

Andere mochten auch (20)

Net core path by Ibon Landa
Net core path by Ibon LandaNet core path by Ibon Landa
Net core path by Ibon Landa
 
Realtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo Cabello
Realtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo CabelloRealtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo Cabello
Realtime Apps en .NET Core by Carlos Landeras y Manuel Rodrigo Cabello
 
Entity Framework Core by Unai Zorrilla
Entity Framework Core by Unai ZorrillaEntity Framework Core by Unai Zorrilla
Entity Framework Core by Unai Zorrilla
 
Push notifications
Push notificationsPush notifications
Push notifications
 
Testing Xamarin Test Cloud
Testing Xamarin Test CloudTesting Xamarin Test Cloud
Testing Xamarin Test Cloud
 
Diseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataformaDiseña tus aplicaciones multiplataforma
Diseña tus aplicaciones multiplataforma
 
Microsoft Intune y Gestión de Identidad Corporativa
Microsoft Intune y Gestión de Identidad Corporativa Microsoft Intune y Gestión de Identidad Corporativa
Microsoft Intune y Gestión de Identidad Corporativa
 
La nueva Intranet es Office 365
La nueva Intranet es Office 365La nueva Intranet es Office 365
La nueva Intranet es Office 365
 
Identidad híbrida con Azure Active Directory
Identidad híbrida con Azure Active DirectoryIdentidad híbrida con Azure Active Directory
Identidad híbrida con Azure Active Directory
 
HTML Tour - Aplicaciones móviles multiplataforma
HTML Tour - Aplicaciones móviles multiplataformaHTML Tour - Aplicaciones móviles multiplataforma
HTML Tour - Aplicaciones móviles multiplataforma
 
HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5HTML Tour - Programación de Videojuegos HTML5
HTML Tour - Programación de Videojuegos HTML5
 
Windows Intune: Sistemas bajo control, sin ápice de dolor.
Windows Intune: Sistemas bajo control, sin ápice de dolor.Windows Intune: Sistemas bajo control, sin ápice de dolor.
Windows Intune: Sistemas bajo control, sin ápice de dolor.
 
Identidad: los misterios del metaverso con Forefront Identity Manager
Identidad: los misterios del metaverso con Forefront Identity ManagerIdentidad: los misterios del metaverso con Forefront Identity Manager
Identidad: los misterios del metaverso con Forefront Identity Manager
 
DevOps: Continuous Delivery and Windows Azure
DevOps: Continuous Delivery and Windows AzureDevOps: Continuous Delivery and Windows Azure
DevOps: Continuous Delivery and Windows Azure
 
.Net Standard Libraries and Xamarin
.Net Standard Libraries and Xamarin.Net Standard Libraries and Xamarin
.Net Standard Libraries and Xamarin
 
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
 
.NET Standard - Under the Hood
.NET Standard - Under the Hood.NET Standard - Under the Hood
.NET Standard - Under the Hood
 
.NET Standard - Introduction
.NET Standard - Introduction.NET Standard - Introduction
.NET Standard - Introduction
 
Single Sign On e IdPs: Active Directory Federation Services (ADFS)
Single Sign On e IdPs: Active Directory Federation Services (ADFS)Single Sign On e IdPs: Active Directory Federation Services (ADFS)
Single Sign On e IdPs: Active Directory Federation Services (ADFS)
 
Seguridad y protección en Office 365
 Seguridad y protección en Office 365 Seguridad y protección en Office 365
Seguridad y protección en Office 365
 

Ähnlich wie ASP.NET MVC Core by Eduard Tomàs

Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVCSebastián Rocco
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptxSibilinoAndante
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCDanae Aguilar Guzmán
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corporacion de Industrias Tecnologicas S.A.
 
Seminario html5
Seminario html5Seminario html5
Seminario html5UDECI
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ijjegonzalezf
 
Presentacion de la práctica de Ajax 2016
Presentacion de la práctica de Ajax 2016Presentacion de la práctica de Ajax 2016
Presentacion de la práctica de Ajax 2016Carlos Almarcha Ruiz
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsFreelancer
 

Ähnlich wie ASP.NET MVC Core by Eduard Tomàs (20)

Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Todomir
TodomirTodomir
Todomir
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
 
Bootstrap 3.
Bootstrap 3.Bootstrap 3.
Bootstrap 3.
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Transforma tu Monolito con HMVC
Transforma tu Monolito con HMVCTransforma tu Monolito con HMVC
Transforma tu Monolito con HMVC
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
 
Java web 01 - servlets
Java web 01 - servletsJava web 01 - servlets
Java web 01 - servlets
 
PHP_Mysql.pptx
PHP_Mysql.pptxPHP_Mysql.pptx
PHP_Mysql.pptx
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Strust
StrustStrust
Strust
 
Presentacion de la práctica de Ajax 2016
Presentacion de la práctica de Ajax 2016Presentacion de la práctica de Ajax 2016
Presentacion de la práctica de Ajax 2016
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 

Mehr von Plain Concepts

R y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntosR y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntosPlain Concepts
 
Video kills the radio star: e-mail is crap and needed disruption
 Video kills the radio star: e-mail is crap and needed disruption Video kills the radio star: e-mail is crap and needed disruption
Video kills the radio star: e-mail is crap and needed disruptionPlain Concepts
 
Cómo redefinir tu organización con IA
Cómo redefinir tu organización con IACómo redefinir tu organización con IA
Cómo redefinir tu organización con IAPlain Concepts
 
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelinesDx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelinesPlain Concepts
 
¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humano¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humanoPlain Concepts
 
Inteligencia artificial para detectar el cáncer de mama
Inteligencia artificial para  detectar el cáncer de mamaInteligencia artificial para  detectar el cáncer de mama
Inteligencia artificial para detectar el cáncer de mamaPlain Concepts
 
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?Plain Concepts
 
Cognitive Services en acción
Cognitive Services en acciónCognitive Services en acción
Cognitive Services en acciónPlain Concepts
 
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...Plain Concepts
 
What if AI was your daughter?
What if AI was your daughter?What if AI was your daughter?
What if AI was your daughter?Plain Concepts
 
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...Plain Concepts
 
Revolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IARevolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IAPlain Concepts
 
Recuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleoRecuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleoPlain Concepts
 
La nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT EdgeLa nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT EdgePlain Concepts
 
DotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native ScriptDotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native ScriptPlain Concepts
 
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...Plain Concepts
 
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...Plain Concepts
 
El camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - IntroductionEl camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - IntroductionPlain Concepts
 
El camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AIEl camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AIPlain Concepts
 

Mehr von Plain Concepts (20)

R y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntosR y Python con Power BI, la ciencia y el análisis de datos, juntos
R y Python con Power BI, la ciencia y el análisis de datos, juntos
 
Video kills the radio star: e-mail is crap and needed disruption
 Video kills the radio star: e-mail is crap and needed disruption Video kills the radio star: e-mail is crap and needed disruption
Video kills the radio star: e-mail is crap and needed disruption
 
Cómo redefinir tu organización con IA
Cómo redefinir tu organización con IACómo redefinir tu organización con IA
Cómo redefinir tu organización con IA
 
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelinesDx29: assisting genetic disease diagnosis with physician-focused AI pipelines
Dx29: assisting genetic disease diagnosis with physician-focused AI pipelines
 
¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humano¿Qué es real? Cuando la IA intenta engañar al ojo humano
¿Qué es real? Cuando la IA intenta engañar al ojo humano
 
Inteligencia artificial para detectar el cáncer de mama
Inteligencia artificial para  detectar el cáncer de mamaInteligencia artificial para  detectar el cáncer de mama
Inteligencia artificial para detectar el cáncer de mama
 
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
¿Está tu compañía preparada para el reto de la Inteligencia Artificial?
 
Cognitive Services en acción
Cognitive Services en acciónCognitive Services en acción
Cognitive Services en acción
 
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
El Hogar Inteligente. De los datos de IoT a los hábitos de una familia a trav...
 
What if AI was your daughter?
What if AI was your daughter?What if AI was your daughter?
What if AI was your daughter?
 
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
Recomendación Basada en Contenidos con Deep Learning: Qué queríamos hacer, Qu...
 
Revolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IARevolucionando la experiencia de cliente con Big Data e IA
Revolucionando la experiencia de cliente con Big Data e IA
 
IA Score en InfoJobs
IA Score en InfoJobsIA Score en InfoJobs
IA Score en InfoJobs
 
Recuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleoRecuperación de información para solicitantes de empleo
Recuperación de información para solicitantes de empleo
 
La nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT EdgeLa nueva revolución Industrial: Inteligencia Artificial & IoT Edge
La nueva revolución Industrial: Inteligencia Artificial & IoT Edge
 
DotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native ScriptDotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
DotNet 2019 | Sherry List - Azure Cognitive Services with Native Script
 
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
DotNet 2019 | Quique Fernández - Potenciando VUE con TypeScript, Inversify, V...
 
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
DotNet 2019 | Daniela Solís y Manuel Rodrigo Cabello - IoT, una Raspberry Pi ...
 
El camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - IntroductionEl camino a las Cloud Native Apps - Introduction
El camino a las Cloud Native Apps - Introduction
 
El camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AIEl camino a las Cloud Native Apps - Azure AI
El camino a las Cloud Native Apps - Azure AI
 

Kürzlich hochgeladen

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 

Kürzlich hochgeladen (13)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 

ASP.NET MVC Core by Eduard Tomàs

  • 2. { “title”: “Developer”, “awards”: [“mvp”], “twitter”: “@eiximenis”, “blog”: “http://geeks.ms/etomas” “work” : { “name”: “Plain Concepts”, “office”: “BCN”, “url”: “http://www.plainconcepts.com” } } Eduard Tomàs #NETCore2017 2
  • 3. • MVC Core mantiene el mismo modelo de desarrollo que MVC5 • Vistas (Razor), Controladores, Acciones, Resultados de acción • Convenciones • Enrutamiento (tabla de rutas + enrutamiento por atributos) • Si sabes MVC5 el salto inicial a MVC Core no es muy complejo • Misma filosofía Lo que es (casi) igual #NETCore2017 3 (COMPARÁNDOLO CON MVC5, CLARO)
  • 4. • Razor Tag Helpers • Razor View Components • Unificación MVC – WebApi • Convenciones personalizadas Algunas cosas que son distintas #NETCore2017 4 (Y LO QUE VEREMOS HOY)
  • 5. • MVC Core se alinea con las tendencias front modernas • Directorio wwwroot donde se despliega la app • Ciclo de trabajo usando npm, gulp, bower, … • Visual Studio 2015/2017 tiene gran soporte para esas herramientas • Fácil uso con herramientas externas La gran diferencia #NETCore2017 5 (Y LO QUE DEBERÍAS IR VIENDO INCLUSO EN MVC5)
  • 6. • Muchas de las diferencias son de ASP.NET Core, no de MVC Core: • Seguridad • Logging • Gestión de errores • Configuración • … MVC Core es un middleware core #NETCore2017 6 (¡SI CONOCES OWIN/KATANA ESTÁS DE SUERTE!)
  • 7. Los Tag Helpers son etiquetas Razor personalizadas que permiten encapsular código Razor Parecidos a los helpers tradicionales, pero más potentes Razor TAG HELPERS #NETCore2017 7 INTEGRANDO HELPERS CON MÁS FACILIDAD
  • 9. • Mayor integración con herramientas de diseño • Heredan de la clase TagHelper • Se pueden redefinir etiquetas HTML existentes • Una etiqueta HTML puede ser o no un Tag Helper en función de sus atributos • Tienen conocimiento de su contenido • Directiva @addTagHelper para importarlos Razor Tag Helpers #NETCore2017 9 (LAS CLAVES)
  • 10. Formularios más claros #NETCore2017 10 YA NO MÁS @HTML…. (CASI) <form asp-controller="Account" asp-action="Login" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form- horizontal"> <h4>Use a local account to log in.</h4> <div asp-validation-summary="All" class="text-danger"></div> <div class="form-group"> <label asp-for="Email" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for="Email" class="form-control" /> <span asp-validation-for="Email" class="text-danger"></span> </div> </div> <div class="form-group"> <label asp-for="Password" class="col-md-2 control-label"></label> <div class="col-md-10"> <input asp-for="Password" class="form-control" /> <span asp-validation-for="Password" class="text-danger"></span> </div> </div> <p> <a asp-action="ForgotPassword">Forgot your password?</a> </p> </form>
  • 12. Los view components son el equivalente a las acciones hijas de MVC5 Invocadas desde Razor Muestran UI parcial con lógica de negocio VIEW COMPONENTS #NETCore2017 12 YA NO MÁS ACCIONES HIJAS
  • 13. • Heredar de ViewComponent • Definir método Invoke (o InvokeAsync) que retorna IViewComponentResult • Parámetros libres (método Invoke no es override). • Vista Default.cshml en /Views/Shared/Components/<Componente> • Invocar desde Razor • @Component.Invoke(“nombre”, new {<parámetros>}) View Components #NETCore2017 13 (LAS CUATRO COSAS A SABER) • Bonus 1.1: Invocar view component como tag helper • <vc:nombre attr=“value” …></vc:nombre>
  • 15. WebApi desaparece y se integra en MVC Core No más ApiController ni clases duplicadas El model binding de MVC Core es una mezcla del de MVC5 y WebApi 2 MVC Y WEBAPI UNIFICADOS #NETCore2017 15 ¡NO MÁS WEBAPI Y MVC!
  • 16. 1. Si el controlador es un controlador de API: 1. Un solo parámetro complejo con [FromBody] 2. N parámetros simples que irán en URL 2. Si el controlador es un controlador de Web: 1. Tantos parámetros simples o complejos como se quiera 2. No usar [FromBody] Model binding unificado #NETCore2017 16 (LAS REGLAS PARA NEWBIES)
  • 18. • El content-type de la petición determina el model binding a usar • Usar application/x-www-form-urlencoded usa model binding a lo MVC • Usar application/json o text/xml usa model binding a lo WebApi • Otros content-types usarán el model binding especificado por el desarrollador Model binding unificado #NETCore2017 18 (LAS CLAVES AVANZADAS)
  • 19. • Parámetros son leídos por value providers • Parámetros son enlazados por model binders • Un mismo parámetro puede ser enlazado múltiples veces • Un mismo parámetro puede ser enlazado desde URL o desde el cuerpo de la petición • Se puede enlazar más de un parámetro desde la URL • Se puede enlazar más de un parámetro desde el cuerpo de la petición Model binding a lo MVC #NETCore2017 19 (LO QUE DEBEMOS SABER)
  • 20. • Parámetros de URL son leídos por value providers • Parámetros de URL son enlazados por model binders • Se puede enlazar más de un parámetro desde la URL • Un mismo parámetro de URL puede ser enlazado varias veces • Solo un parámetro puede ser enlazado desde el cuerpo de la petición • Leído y enlazado a partir de un InputFormatter • El parámetro enlazado a partir del cuerpo de la petición debe estar marcado con [FromBody] Model binding a lo WebApi #NETCore2017 20 (LO QUE DEBEMOS SABER)
  • 22. • Integrada en aquellos action results que heredan de ObjectResult • Usa la cabecera Accept de la petición • Se puede forzar un formato con [Produces] • La respuesta es generada por un OutputFormatter • Podemos crear OutputFormatters nuevos para dar soporte a nuevos formatos Negociación de contenido #NETCore2017 22 (O COMO DARLE AL CLIENTE LO QUE PIDE)
  • 23. • Si no hay un OutputFormatter para el tipo especificado el fallback por defecto es JSON • Se puede añadir el HttpNotAcceptableOutputFormatter que devolverá un 406 Negociación de contenido #NETCore2017 23 (UN PAR DE COSILLAS MÁS…) services.AddMvc().Configure<MvcOptions>(options => { options.OutputFormatters.Insert(0, new HttpNotAcceptableOutputFormatter()); }
  • 24. • En MVC5 / WebApi2 si se devolvía un null ese era serializado Un poco más restful #NETCore2017 24 (DOS DETALLITOS…) • En MVC Core eso devuelve un 204 (No Content) • Las cadenas son devueltas usando text/plain
  • 25. • Podemos modificar las convenciones por defecto y agregar convenciones nuevas • ¿Es buena idea modificar las convenciones? … • Habilita escenarios interesantes • Implementar IApplicationModelConvention • Podemos agregar restricciones implementando IActionConstraintMetadata Convenciones propias #NETCore2017 25 (UN GRAN PODER CONLLEVA UNA GRAN RESPONSABILIDAD)
  • 27. • Empieza ya a usar npm, gulp y similares. • Olvida los bundles de MVC • Usa los IHttpResult de WebApi2. • Olvida el enrutado por verbo de WebApi. • Usa enrutado por atributos en WebApi. • Usa WebApi en modo OWIN. • Usa inyección de dependencias • Evita devolver datos desde MVC5. Usa WebApi. De MVC5 a MVC Core #NETCore2017 27 (CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
  • 28. • Sustituye Razor Helpers por Tag Helpers • Sustituye acciones hijas por View Components • Elimina [FromUri] en ApiControllers y verifica los bindings • Y por supuesto: Valora si vale la pena migrar. ¡Recuerda todo lo que no es realmente MVC Core pero sí ASP.NET Core! De MVC5 a MVC Core #NETCore2017 28 (CONSEJOS BÁSICOS PARA AYUDARTE A DAR EL SALTO)
  • 30. www.plainconcepts.com MADRID Paseo de la Castellana 163, 10º 28046 Madrid. España T. (+34) 91 5346 836 BILBAO Nervión 3 , 6º 48001 Bilbao. España T. (+34) 94 6008 168 BARCELONA Av. Josep Tarradellas 10, 6º 1ª 08029 Barcelona. España T. (+34) 93 3607 114 SEVILLA Avenida de la innovación s/n Edificio Renta Sevilla, 3º A 41020 Sevilla. España DUBAI Dubai Internet City. Building 1 73030 Dubai. EAU T. (+971) 4 551 6653 LONDON Impact Hub Kings Cross 24B York Way, N1 9AB London. UK SEATTLE 1511, Third Ave Seattle WA 98101. USA T. (+1) 206 708 1285