SlideShare uma empresa Scribd logo
1 de 32
Agenda
• ASP.NET 5 Introduction
• Unai Zorrilla
• Novedades de MVC 6
• Eduard Tomás
• break
• Migrando desde MVC 5 a MVC 6
• ASP.NET Cross Plattform
http://aka.ms/EvASPNET5
ASP .NET MVC6
Eduard Tomàs
Compulsive Developer at Plain Concepts
etomas@plainconcepts.com
@eiximenis
http://blogs.plainconcepts.com/aspnetspain/
http://geeks.ms/blogs/etomas
MVC6 – Novedades
• MVC6 es una evolución de MVC5
• El modelo de desarrollo es el mismo: controladores, vistas, modelo
• Los cambios más importantes vienen dados por las propias novedades de ASPNET5
(configuración, inyección dependencias, nuevo workflow de trabajo)
• Lo que conoces del modelo de desarrollo de MVC5 no está obsoleto
Antes de nada… lo qué sigue “igual”
• Agregar referencia a Microsoft.AspNet.MVC 6.0.0
• Configurar servicios MVC6 en Startup.ConfigureServices
• Añadir MVC6 al pipeline de ASPNET5 en Startup.Configure
Instanciación MVC6
• El paquete Microsoft.AspNet.Diagnostics proporciona la página de error
• Debe configurarse en Startup con app.UseDeveloperExceptionPage()
• Esta página proprciona mucho detalle de los errores. En escenarios fuera de
desarrollo debe usarse UseExceptionHandler()
Página de error
• El mismo paquete Microsoft.AspNet.Diagnostics proporciona una página de
diagnóstico
• Dicha página proporciona información de los paquetes cargados
• Debe añadirse al pipeline con app.UseRuntimeInfoPage()
• La URL por defecto es /runtimeinfo
Página de diagnostico
Demo
Páginas de error y diagnóstico
• Reemplazan a las vistas parciales de MVC5
— Puede verse un View Component como un “pequeño controlador”
— El VC tiene una única responsabilidad: devolver la vista parcial
• Separación de responsabilidades
— No es necesario “hinchar” un controlador existente
View Components
• Clase que herede de ViewComponent
— Opcional: Atributo [ViewComponent] para especificar nombre
• Declarar método IViewComponentResult Invoke(…)
• Crear la vista asociada en
/Views/Shared/<ViewComponent>/
• Uso: @Component(“nombre”).Invoke(...)
ViewComponents
Demo
View Components
• Permiten que una “etiqueta HTML” en una vista de Razor sea procesada en servidor
• No son Web Controls
• Sustituyen a los helpers clásicos de Razor
• Permiten una mayor integración con herramientas
Razor Tag Helpers
Demo
Tag Helpers
• Heredar de TagHelper
• Decorar con [HtmlTargetElement] indicando qué atributos y qué tag son respondidos
por el TagHelper
• Redefinir el método Process
Creación de un TagHelper
• La directiva addTagHelper “clase, assembly” importa el TagHelper indicado del
ensamblado correspondiente
• VS2015 incluye en _ViewImports.cshtml el código para importar todos los TagHelpers
de MVC6 en todas las vistas:
— @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
Importar TagHelpers
Demo
Creación de un TagHelper
• Si un TagHelper es importado para la vista actual se ejecutará en todas las etiquetas
HTML que coincidan con la etiqueta declarada en [HtmlTargetElement] siempre y
cuando contengan algunos de los atributos declarados
• Podemos preceder el nombre del tag con ! para indicar a Razor que no queremos
que se procese el TagHelper
• Podemos usar @tagHelperPrefix “prefijo” para forzar un prefijo para todos los
TagHelpers.
Ejecución selectiva de TagHelpers
Demo
Ejecución selectiva de TagHelpers
• Se soporta la directiva @inject para inyectar dependencias en vistas Razor
— @inject MyType MyVariable
• Ojo… Eso da mucho poder a las vistas, úsalo con cautela
• Recuerda la separación de responsabilidades de MVC
Inyección de dependencias en vistas
• WebApi se integra dentro de MVC
• Desaparece “ApiController”
• Un solo sistema de routing.
• Un solo sistema de model binding
• Una sola jerarquía de clases
• Un solo framework
Unificación de WebApi y MVC
Demo
Controladores “duales”
• No es necesario que un controlador herede de la clase base Controller
• Interesante en escenarios, donde por cualquier razón, los controladores deban
heredar de otra clase
Controladores POCO
Demo
Controladores POCO
• Primero elige en qué ensamblados pueden estar los controladores.
• El ensamblado debe tener al menos una referencia a:
— “Microsoft.AspNet.Mvc”
— “Microsoft.AspNet.Mvc.Core”
— “Microsoft.AspNet.Mvc.ModelBinding”
— “Microsoft.AspNet.Mvc.Razor”
— “Microsoft.AspNet.Mvc.Razor.Host”
— “Microsoft.AspNet.Mvc.TagHelpers”
• Se puede modificar este comportamiento implementando IAssemblyProvider
Como MVC6 descubre controladores
• Una clase es considerada un controlador, si estando en un ensamblado seleccionado:
— Es pública i no abstracta
— No es genérica
— No es una nested class
— Debe heredar de Controller o terminar su nombre en Controller
— No debe estar decorada con [NonController]
• Puede redefinirse este comportamiento proporcionando un ControllerTypeProvider
propio
Como MVC6 descubre controladores
Demo
Localización de controladores
Learn more!
• ASP.NET Docs
• http://asp.net/en/latest
• ASP.NET MVC
• http://asp.net/vnext/mvc
• Github
• http://github.com/aspnet
Questions?
ASP .NET 5

Mais conteúdo relacionado

Mais procurados

Mais procurados (19)

React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
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
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep Dive
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
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
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Spring boot et. al. para el impaciente
Spring boot et. al. para el impacienteSpring boot et. al. para el impaciente
Spring boot et. al. para el impaciente
 
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
 
Security in MVC Core by Hugo Biarge
Security in MVC Core by Hugo BiargeSecurity in MVC Core by Hugo Biarge
Security in MVC Core by Hugo Biarge
 
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010
 
Mvc4 Intro
Mvc4 IntroMvc4 Intro
Mvc4 Intro
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
 
Plainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time ApplicationsPlainconcepts .Net Core Event - Real Time Applications
Plainconcepts .Net Core Event - Real Time Applications
 
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
 
Angular 6
Angular 6Angular 6
Angular 6
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 

Semelhante a Novedades de ASP.NET MVC6

Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
Julito Avellaneda
 

Semelhante a Novedades de ASP.NET MVC6 (20)

ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard Tomàs
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 
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
 
Introducción a Cake PHP Framework
Introducción a Cake PHP FrameworkIntroducción a Cake PHP Framework
Introducción a Cake PHP Framework
 
Iniciación Con CakePHP
Iniciación Con CakePHPIniciación Con CakePHP
Iniciación Con CakePHP
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
 
Trabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azureTrabajando con MySQL y PostgreSQL dentro de azure
Trabajando con MySQL y PostgreSQL dentro de azure
 
Strust
StrustStrust
Strust
 
Mvc
MvcMvc
Mvc
 
Manualcake
ManualcakeManualcake
Manualcake
 
Vaadin 8 en BBR Spa
Vaadin 8 en BBR SpaVaadin 8 en BBR Spa
Vaadin 8 en BBR Spa
 
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
 
Introducción a Asp.Net Mvc
Introducción a Asp.Net MvcIntroducción a Asp.Net Mvc
Introducción a Asp.Net Mvc
 
Ruby On Rails Intro
Ruby On Rails IntroRuby On Rails Intro
Ruby On Rails Intro
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Mvc
MvcMvc
Mvc
 
Rails intro
Rails introRails intro
Rails intro
 
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
[Code Camp 2009] ASP.NET MVC a full (Matías Juan Rubí + Jonathan Solarz)
 
Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 

Mais de Eduard Tomàs

Mais de Eduard Tomàs (20)

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why's
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nunca
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundo
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aks
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramos
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
Azure functions
Azure functionsAzure functions
Azure functions
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your device
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
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
FagnerLisboa3
 

Último (15)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
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 de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
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
 
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
 
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
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
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
 

Novedades de ASP.NET MVC6

  • 1.
  • 2. Agenda • ASP.NET 5 Introduction • Unai Zorrilla • Novedades de MVC 6 • Eduard Tomás • break • Migrando desde MVC 5 a MVC 6 • ASP.NET Cross Plattform http://aka.ms/EvASPNET5
  • 4. Eduard Tomàs Compulsive Developer at Plain Concepts etomas@plainconcepts.com @eiximenis http://blogs.plainconcepts.com/aspnetspain/ http://geeks.ms/blogs/etomas
  • 6. • MVC6 es una evolución de MVC5 • El modelo de desarrollo es el mismo: controladores, vistas, modelo • Los cambios más importantes vienen dados por las propias novedades de ASPNET5 (configuración, inyección dependencias, nuevo workflow de trabajo) • Lo que conoces del modelo de desarrollo de MVC5 no está obsoleto Antes de nada… lo qué sigue “igual”
  • 7. • Agregar referencia a Microsoft.AspNet.MVC 6.0.0 • Configurar servicios MVC6 en Startup.ConfigureServices • Añadir MVC6 al pipeline de ASPNET5 en Startup.Configure Instanciación MVC6
  • 8. • El paquete Microsoft.AspNet.Diagnostics proporciona la página de error • Debe configurarse en Startup con app.UseDeveloperExceptionPage() • Esta página proprciona mucho detalle de los errores. En escenarios fuera de desarrollo debe usarse UseExceptionHandler() Página de error
  • 9. • El mismo paquete Microsoft.AspNet.Diagnostics proporciona una página de diagnóstico • Dicha página proporciona información de los paquetes cargados • Debe añadirse al pipeline con app.UseRuntimeInfoPage() • La URL por defecto es /runtimeinfo Página de diagnostico
  • 10. Demo Páginas de error y diagnóstico
  • 11. • Reemplazan a las vistas parciales de MVC5 — Puede verse un View Component como un “pequeño controlador” — El VC tiene una única responsabilidad: devolver la vista parcial • Separación de responsabilidades — No es necesario “hinchar” un controlador existente View Components
  • 12. • Clase que herede de ViewComponent — Opcional: Atributo [ViewComponent] para especificar nombre • Declarar método IViewComponentResult Invoke(…) • Crear la vista asociada en /Views/Shared/<ViewComponent>/ • Uso: @Component(“nombre”).Invoke(...) ViewComponents
  • 14. • Permiten que una “etiqueta HTML” en una vista de Razor sea procesada en servidor • No son Web Controls • Sustituyen a los helpers clásicos de Razor • Permiten una mayor integración con herramientas Razor Tag Helpers
  • 16. • Heredar de TagHelper • Decorar con [HtmlTargetElement] indicando qué atributos y qué tag son respondidos por el TagHelper • Redefinir el método Process Creación de un TagHelper
  • 17. • La directiva addTagHelper “clase, assembly” importa el TagHelper indicado del ensamblado correspondiente • VS2015 incluye en _ViewImports.cshtml el código para importar todos los TagHelpers de MVC6 en todas las vistas: — @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" Importar TagHelpers
  • 18. Demo Creación de un TagHelper
  • 19. • Si un TagHelper es importado para la vista actual se ejecutará en todas las etiquetas HTML que coincidan con la etiqueta declarada en [HtmlTargetElement] siempre y cuando contengan algunos de los atributos declarados • Podemos preceder el nombre del tag con ! para indicar a Razor que no queremos que se procese el TagHelper • Podemos usar @tagHelperPrefix “prefijo” para forzar un prefijo para todos los TagHelpers. Ejecución selectiva de TagHelpers
  • 21. • Se soporta la directiva @inject para inyectar dependencias en vistas Razor — @inject MyType MyVariable • Ojo… Eso da mucho poder a las vistas, úsalo con cautela • Recuerda la separación de responsabilidades de MVC Inyección de dependencias en vistas
  • 22. • WebApi se integra dentro de MVC • Desaparece “ApiController” • Un solo sistema de routing. • Un solo sistema de model binding • Una sola jerarquía de clases • Un solo framework Unificación de WebApi y MVC
  • 24. • No es necesario que un controlador herede de la clase base Controller • Interesante en escenarios, donde por cualquier razón, los controladores deban heredar de otra clase Controladores POCO
  • 26. • Primero elige en qué ensamblados pueden estar los controladores. • El ensamblado debe tener al menos una referencia a: — “Microsoft.AspNet.Mvc” — “Microsoft.AspNet.Mvc.Core” — “Microsoft.AspNet.Mvc.ModelBinding” — “Microsoft.AspNet.Mvc.Razor” — “Microsoft.AspNet.Mvc.Razor.Host” — “Microsoft.AspNet.Mvc.TagHelpers” • Se puede modificar este comportamiento implementando IAssemblyProvider Como MVC6 descubre controladores
  • 27. • Una clase es considerada un controlador, si estando en un ensamblado seleccionado: — Es pública i no abstracta — No es genérica — No es una nested class — Debe heredar de Controller o terminar su nombre en Controller — No debe estar decorada con [NonController] • Puede redefinirse este comportamiento proporcionando un ControllerTypeProvider propio Como MVC6 descubre controladores
  • 29. Learn more! • ASP.NET Docs • http://asp.net/en/latest • ASP.NET MVC • http://asp.net/vnext/mvc • Github • http://github.com/aspnet
  • 31.

Notas do Editor

  1. DemoPaginas.sln
  2. Explicación de lo que son los View Components, qué rol juegan y como se usan
  3. Mencionar la versión asíncrona de Invoke (InvokeAsync)
  4. Mostrar DemoVC.sln Mencionar la inyección de dependencias en ViewComponents
  5. Enseñar los TagHelpers de formulario DemoTagHelper.sln -> Vista Home/Contact
  6. DemoTagHelper.sln -> Repeater
  7. DemoDual.sln Comentar código y mencionar serialización json / xml
  8. DemoPoco.sln
  9. DemoControllersLocation.sln