novedades de asp.net mvc6
TRANSCRIPT
![Page 1: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/1.jpg)
![Page 2: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/2.jpg)
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
![Page 3: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/3.jpg)
ASP .NET MVC6
![Page 4: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/4.jpg)
Eduard TomàsCompulsive Developer at Plain [email protected]@eiximenishttp://blogs.plainconcepts.com/aspnetspain/http://geeks.ms/blogs/etomas
![Page 5: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/5.jpg)
MVC6 – Novedades
![Page 6: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/6.jpg)
• 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”
![Page 7: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/7.jpg)
• 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
![Page 8: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/8.jpg)
• 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
![Page 9: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/9.jpg)
• 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
![Page 10: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/10.jpg)
DemoPáginas de error y diagnóstico
![Page 11: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/11.jpg)
• 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
![Page 12: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/12.jpg)
• 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
![Page 13: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/13.jpg)
DemoView Components
![Page 14: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/14.jpg)
• 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
![Page 15: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/15.jpg)
DemoTag Helpers
![Page 16: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/16.jpg)
• 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
![Page 17: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/17.jpg)
• 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
![Page 18: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/18.jpg)
DemoCreación de un TagHelper
![Page 19: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/19.jpg)
• 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
![Page 20: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/20.jpg)
DemoEjecución selectiva de TagHelpers
![Page 21: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/21.jpg)
• 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
![Page 22: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/22.jpg)
• 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
![Page 23: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/23.jpg)
DemoControladores “duales”
![Page 24: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/24.jpg)
• 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
![Page 25: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/25.jpg)
DemoControladores POCO
![Page 26: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/26.jpg)
• 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
![Page 27: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/27.jpg)
• 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
![Page 28: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/28.jpg)
DemoLocalización de controladores
![Page 29: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/29.jpg)
•
Learn more!
• ASP.NET Docs• http://asp.net/en/latest
• ASP.NET MVC • http://asp.net/vnext/mvc
• Github• http://github.com/aspnet
![Page 30: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/30.jpg)
Questions?
![Page 31: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/31.jpg)
![Page 32: Novedades de ASP.NET MVC6](https://reader036.vdocuments.mx/reader036/viewer/2022062523/58ef5c591a28abdd368b456f/html5/thumbnails/32.jpg)
ASP .NET 5