SlideShare a Scribd company logo
1 of 37
Conheça oASP.NET MVC 2 Daniel Ferreira MSP | MCP | MCTS | MCPD C.E.S.A.R @dfsdaniel
Agenda ,[object Object]
Slide do obrigado!,[object Object]
O ASP.NET Hoje! ASP.NET Dynamic Data Presentation ASP.NET WebForms ASP.NET MVC ASP.NET Core Runtime
WebFormsis great, but options are good…
Master Page Control Control UI Presentation Logic Business Logic Data Access Control Control Page Control Control Control Control Quemfaz o que? Como e quando? Semdivisão de responsabilidades
Abstração de controlespodenãoseruma boa idéia…
Controller (Input) Model (Logic) View (Presentation) Separação de interesses! O Padrão MVC
Controller Controller Handles input (HTTP requests) Request View View Visually represents the model Response Por outro ângulo…
O ASP.NET MVC Framework Namespace: System.Web.Mvc Um novo template de projeto no Visual Studio Uma nova maneira de desenvolver com ASP.NET Não é uma nova versão dos webforms Foco na arquitetura do projeto
O ASP.NET MVC Framework Roadmap: Prédaversão 1 VS 2008 (dez/07 a mar/09) Versão 1.0 VS 2008 (mar/09) Versão 1.1 VS 2010 beta 1 (jun/09) Prédaversão 2 VS 2008 e VS 2010 (jul/09) Versão 2 VS 2008 e VS 2010 (primeirotrimestre de 2010)
ASP.NET MVC 2.0
Novidadesda versão 2.0 Agrupamentoporáreas in-the-box Data Annotations Validation Templates Helpers HTML HttpPostAttribute Adição do DefaultValueAttribute Client-side validation RequireHttpsAttribute Model Validation Providers Metadata Providers
Áreas – Preview 1 Partição e agrupamento de funcionalidadesporáreas; Permitemaiormodularidade e separação. Suporte nativo a URLs mais simpáticas: “/Area1/Controlador1” ou“/Area2/Controlador1” 14
Áreas – Preview 2 Suporte “in-the-box” semnecessidade de múltiplosprojetos “AddArea” Dialog Registro de rota dinamicamente (AreaRegistration.cs) 15
Áreas
HTML Helpers Uso de expressões lambda fortemente tipadas por padrão; Visualização do erro em tempo de compilação; Melhor suporte ao intellisense dentro das views. Preview 1:  Html.EditorFor(), Html.LabelFor() e Html.DisplayFor()  Preview 2: Html.TextBoxFor(), Html.TextAreaFor(), Html.DropDownListFor(), Html.HiddenFor(), e Html.ValidationMessageFor()
HTML Helpers ou Antes Agora
Templates Permite customizar a exibição dos itens do EditorFor() Não precisa colocar o ID Uso do atributo UIHint no objectmodel Reaproveitamento de código
Templates
DataAnnotationsHTMLHelpers
Validação Suporte nativo para validação através de DataAnnotation Declaração de regras nos ObjectModels Namespace System.ComponentModel.DataAnnotations ValidationAttribute como classe base para criação de atributos de validação personalizados Suporte a outras validações como o CastleValidator, EntLibValidation, etc)
Classes de Validação
Validação com DataAnnotations public classCustomer { [Required] public stringName{get; set; } [Range(1, 120, ErrorMessage="Invalid age")] public intAge{ get; set; } [RegularExpression(@"^(([a-zA-Z0-9_]+)@([a-zA-Z0-9_]+)([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_]+)@([a-zA-Z0-9_]+)([a-zA-Z]{2,5}){1,25})+)*$", ErrorMessage="Invalid email")] public string Email{get; set; } [UIHint("CountryDropDown")] public string Country {get; set;} [DisplayName("Is Active Customer:")] public bool IsActive{get; set; } }
Client-side validation Também é possível fazer a validação do lado do cliente de forma mais direta; Intregação do xVal + DataAnnotations + JQuery Já incluso os plugins de validação do JQuery 1.3.2
HttpPostAttribute Antes: Agora: [AcceptVerbs(HttpVerbs.Post)]  publicActionResult Create(Post post)  [HttpPost] publicActionResultCreate(Postpost)
DefaultValueAttribute Agora as ações podem ter valores default, o que antes só era possível com a implementação de diferentes rotas: Agora basta declarar antes do atributo routes.MapRoute( "Default",                                              "{controller}/{action}/{id}",                           new { controller = "Home", action = "Index", id = "" } ); publicActionResultCreate([DefaultValueAttribute(5)] int pagina)
RequireHttpsAttribute Por padrão, as requisições são realizadas com chamadas non-SSL (HTTP) Novo atributo de classe RequireHttpsAttributeque permite direcionar as ações dos controllers para requisições HTTP seguras (SSL-Enabled – HTTPS) 28
Providers ModelMetadata e ModelMetadataProvider A classe ModelMetadataProvider é uma abstração para obter todos os metadados dentro de uma View.  Além do provider padrão do MVC para extrair DataAnnotations, é possível criar seus próprios Metadataproviders.
Providers ModelValidator Providers Também é possível criar seus próprios providers de validação com mapeamentos e regras personalizadas O padrão do MVC também é usando o DataAnnotations.
Extensibilidade Action Filters Model  Binders Controller Builder Controller Factory Controller Controller Action Invoker View Engine View Action Result Qualquer parte podesertrocada!
http://www.asp.net/mvc
Open Source!
http://codeplex.com/aspnet
Mindset ,[object Object]
Nósjá o temos, se chama: laço de foreach.Conversa entre desenvolvedoresda Microsoft, segundorelatadopor Scott Hanselman, do time do MVC.
[object Object]

More Related Content

What's hot

Implementando MVC com AJAX
Implementando MVC com AJAXImplementando MVC com AJAX
Implementando MVC com AJAXcejug
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
AngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivasAngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivasJanderson Fernandes Cardoso
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melothalesboss
 

What's hot (17)

Apresentação jsf 1_2
Apresentação jsf 1_2Apresentação jsf 1_2
Apresentação jsf 1_2
 
Implementando MVC com AJAX
Implementando MVC com AJAXImplementando MVC com AJAX
Implementando MVC com AJAX
 
Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2
 
Conceitos de Java Web
Conceitos de Java WebConceitos de Java Web
Conceitos de Java Web
 
MVC Pattern
MVC PatternMVC Pattern
MVC Pattern
 
introdução a ajax
introdução a ajaxintrodução a ajax
introdução a ajax
 
MondoDB
MondoDBMondoDB
MondoDB
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
Angular 2
Angular 2Angular 2
Angular 2
 
JavaServer Faces
JavaServer FacesJavaServer Faces
JavaServer Faces
 
Asp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 PtAsp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 Pt
 
J530 15 workshop
J530 15 workshopJ530 15 workshop
J530 15 workshop
 
AngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivasAngularJS - 10 passos para aprender a criar suas directivas
AngularJS - 10 passos para aprender a criar suas directivas
 
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_MeloUtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
UtilizandoJSF_no_Desenvolvimento_de_aplicacoes_web_by_Thales_Batista_de_Melo
 
Aula1
Aula1Aula1
Aula1
 
Dao
DaoDao
Dao
 

Similar to [CLPE] Novidades do Asp.net mvc 2

Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 OverviewAlexsandro Almeida
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCMichael Costa
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Alexandre Tarifa
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Ramon Durães
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Colóquio A2 Comunicação
Colóquio A2 ComunicaçãoColóquio A2 Comunicação
Colóquio A2 ComunicaçãoHussani Oliveira
 
ASP .NET 4.0 WebForms, Novas funcionalidades
ASP .NET 4.0 WebForms, Novas funcionalidadesASP .NET 4.0 WebForms, Novas funcionalidades
ASP .NET 4.0 WebForms, Novas funcionalidadesC. Augusto Proiete
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheirasLambda 3
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Rodrigo Kono
 
Windows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureWindows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureVitor Ciaramella
 

Similar to [CLPE] Novidades do Asp.net mvc 2 (20)

Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview365on Lab Asp.Net MVC Fundamentos 01 Overview
365on Lab Asp.Net MVC Fundamentos 01 Overview
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010
 
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
Introdução ao ASP.NET 3.5 - Campus Party Brasil 2009
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Colóquio A2 Comunicação
Colóquio A2 ComunicaçãoColóquio A2 Comunicação
Colóquio A2 Comunicação
 
ASP .NET 4.0 WebForms, Novas funcionalidades
ASP .NET 4.0 WebForms, Novas funcionalidadesASP .NET 4.0 WebForms, Novas funcionalidades
ASP .NET 4.0 WebForms, Novas funcionalidades
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
 
Windows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows AzureWindows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows Azure
 

More from Felipe Pimentel

Windows Phone 7 para um público não TI
Windows Phone 7 para um público não TIWindows Phone 7 para um público não TI
Windows Phone 7 para um público não TIFelipe Pimentel
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Felipe Pimentel
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7Felipe Pimentel
 
Proposta planos digaonde
Proposta planos digaondeProposta planos digaonde
Proposta planos digaondeFelipe Pimentel
 
Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Felipe Pimentel
 
Parceria DotNetArchitects PE com TWM
Parceria DotNetArchitects PE com  TWM Parceria DotNetArchitects PE com  TWM
Parceria DotNetArchitects PE com TWM Felipe Pimentel
 
[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0Felipe Pimentel
 
[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010Felipe Pimentel
 
[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4Felipe Pimentel
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
 
[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4Felipe Pimentel
 
ASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCFelipe Pimentel
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)Felipe Pimentel
 

More from Felipe Pimentel (16)

Windows Phone 7 para um público não TI
Windows Phone 7 para um público não TIWindows Phone 7 para um público não TI
Windows Phone 7 para um público não TI
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7
 
Proposta planos digaonde
Proposta planos digaondeProposta planos digaonde
Proposta planos digaonde
 
Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011 Silverlight no MIC Summer 2011
Silverlight no MIC Summer 2011
 
Mvc 3 & razor
Mvc 3 & razorMvc 3 & razor
Mvc 3 & razor
 
MVVM
MVVMMVVM
MVVM
 
Parceria DotNetArchitects PE com TWM
Parceria DotNetArchitects PE com  TWM Parceria DotNetArchitects PE com  TWM
Parceria DotNetArchitects PE com TWM
 
[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0[CLPE] Novidades do .net Framework 4.0
[CLPE] Novidades do .net Framework 4.0
 
[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010[CLPE] Visual Studio 2010
[CLPE] Visual Studio 2010
 
[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4[CLPE] Novidades do Asp.net 4
[CLPE] Novidades do Asp.net 4
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4[CLPE] Novidades do Entity Framework 4
[CLPE] Novidades do Entity Framework 4
 
ASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVCASP.NET WebForms x ASP.NET MVC
ASP.NET WebForms x ASP.NET MVC
 
Windows Phone 7
Windows Phone 7Windows Phone 7
Windows Phone 7
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)
 

[CLPE] Novidades do Asp.net mvc 2

  • 1. Conheça oASP.NET MVC 2 Daniel Ferreira MSP | MCP | MCTS | MCPD C.E.S.A.R @dfsdaniel
  • 2.
  • 3.
  • 4. O ASP.NET Hoje! ASP.NET Dynamic Data Presentation ASP.NET WebForms ASP.NET MVC ASP.NET Core Runtime
  • 5. WebFormsis great, but options are good…
  • 6. Master Page Control Control UI Presentation Logic Business Logic Data Access Control Control Page Control Control Control Control Quemfaz o que? Como e quando? Semdivisão de responsabilidades
  • 8. Controller (Input) Model (Logic) View (Presentation) Separação de interesses! O Padrão MVC
  • 9. Controller Controller Handles input (HTTP requests) Request View View Visually represents the model Response Por outro ângulo…
  • 10. O ASP.NET MVC Framework Namespace: System.Web.Mvc Um novo template de projeto no Visual Studio Uma nova maneira de desenvolver com ASP.NET Não é uma nova versão dos webforms Foco na arquitetura do projeto
  • 11. O ASP.NET MVC Framework Roadmap: Prédaversão 1 VS 2008 (dez/07 a mar/09) Versão 1.0 VS 2008 (mar/09) Versão 1.1 VS 2010 beta 1 (jun/09) Prédaversão 2 VS 2008 e VS 2010 (jul/09) Versão 2 VS 2008 e VS 2010 (primeirotrimestre de 2010)
  • 13. Novidadesda versão 2.0 Agrupamentoporáreas in-the-box Data Annotations Validation Templates Helpers HTML HttpPostAttribute Adição do DefaultValueAttribute Client-side validation RequireHttpsAttribute Model Validation Providers Metadata Providers
  • 14. Áreas – Preview 1 Partição e agrupamento de funcionalidadesporáreas; Permitemaiormodularidade e separação. Suporte nativo a URLs mais simpáticas: “/Area1/Controlador1” ou“/Area2/Controlador1” 14
  • 15. Áreas – Preview 2 Suporte “in-the-box” semnecessidade de múltiplosprojetos “AddArea” Dialog Registro de rota dinamicamente (AreaRegistration.cs) 15
  • 17. HTML Helpers Uso de expressões lambda fortemente tipadas por padrão; Visualização do erro em tempo de compilação; Melhor suporte ao intellisense dentro das views. Preview 1: Html.EditorFor(), Html.LabelFor() e Html.DisplayFor() Preview 2: Html.TextBoxFor(), Html.TextAreaFor(), Html.DropDownListFor(), Html.HiddenFor(), e Html.ValidationMessageFor()
  • 18. HTML Helpers ou Antes Agora
  • 19. Templates Permite customizar a exibição dos itens do EditorFor() Não precisa colocar o ID Uso do atributo UIHint no objectmodel Reaproveitamento de código
  • 22. Validação Suporte nativo para validação através de DataAnnotation Declaração de regras nos ObjectModels Namespace System.ComponentModel.DataAnnotations ValidationAttribute como classe base para criação de atributos de validação personalizados Suporte a outras validações como o CastleValidator, EntLibValidation, etc)
  • 24. Validação com DataAnnotations public classCustomer { [Required] public stringName{get; set; } [Range(1, 120, ErrorMessage="Invalid age")] public intAge{ get; set; } [RegularExpression(@"^(([a-zA-Z0-9_]+)@([a-zA-Z0-9_]+)([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_]+)@([a-zA-Z0-9_]+)([a-zA-Z]{2,5}){1,25})+)*$", ErrorMessage="Invalid email")] public string Email{get; set; } [UIHint("CountryDropDown")] public string Country {get; set;} [DisplayName("Is Active Customer:")] public bool IsActive{get; set; } }
  • 25. Client-side validation Também é possível fazer a validação do lado do cliente de forma mais direta; Intregação do xVal + DataAnnotations + JQuery Já incluso os plugins de validação do JQuery 1.3.2
  • 26. HttpPostAttribute Antes: Agora: [AcceptVerbs(HttpVerbs.Post)] publicActionResult Create(Post post) [HttpPost] publicActionResultCreate(Postpost)
  • 27. DefaultValueAttribute Agora as ações podem ter valores default, o que antes só era possível com a implementação de diferentes rotas: Agora basta declarar antes do atributo routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); publicActionResultCreate([DefaultValueAttribute(5)] int pagina)
  • 28. RequireHttpsAttribute Por padrão, as requisições são realizadas com chamadas non-SSL (HTTP) Novo atributo de classe RequireHttpsAttributeque permite direcionar as ações dos controllers para requisições HTTP seguras (SSL-Enabled – HTTPS) 28
  • 29. Providers ModelMetadata e ModelMetadataProvider A classe ModelMetadataProvider é uma abstração para obter todos os metadados dentro de uma View. Além do provider padrão do MVC para extrair DataAnnotations, é possível criar seus próprios Metadataproviders.
  • 30. Providers ModelValidator Providers Também é possível criar seus próprios providers de validação com mapeamentos e regras personalizadas O padrão do MVC também é usando o DataAnnotations.
  • 31. Extensibilidade Action Filters Model Binders Controller Builder Controller Factory Controller Controller Action Invoker View Engine View Action Result Qualquer parte podesertrocada!
  • 35.
  • 36. Nósjá o temos, se chama: laço de foreach.Conversa entre desenvolvedoresda Microsoft, segundorelatadopor Scott Hanselman, do time do MVC.
  • 37.
  • 40. Muitoscontrolesemsuasmãos, use com moderação! Resumindo

Editor's Notes

  1. Estimated Time: 2 minutesFor the entire life of ASP.NET it has been seen as a single framework that included both runtime and presentational aspects. This includes core features such as roles and globalization, as well as WebForms features such as master pages and user controls.
  2. Estimated Time: 2 minutesWith the release of .NET Framework 3.5 SP1, ASP.NET started being seen as more modular. ASP.NET Core now represents just the runtime aspects of ASP.NET, and ASP.NET WebForms is simply a presentation option that sits on top of that runtime. With this, it becomes possible to introduce other presentation layer implementations on top of ASP.NET, such as the new ASP.NET MVC framework.While many who are beginning to investigate into ASP.NET MVC think that it is the replacement for WebForms, as you can see, it is simply another option for developing web applications using the ASP.NET runtime.
  3. Estimated Time: 1 minuteWebForms has been the only option on the ASP.NET stack and provides a mature product that has proven successful for lots of developers. But it does have some weaknesses.
  4. Estimated Time: 2 minutesThe level of abstraction that WebForms provides has a lot of benefits to it, but it doesn’t provide any framework-level guidance in terms of what should do what and when. Between your pages, master pages, user controls, server controls, and custom controls, you can end up with a mixture of HTML, data access code, and business logic.There are certainly methodologies/practices that can be employed with WebForms that can remedy that, but it becomes an implementation task of the developer, since the framework doesn’t provide any of that separation/guidance.
  5. Estimated Time: 2 minutesThe control abstractions that WebForms provides are very powerful in that they neatly contain all of the UI and business logic needed so you can just place them within a page and go. The adverse side of that is that it can end up hiding complexity that you’d rather have control over. A common problem is viewstate[Advance Animation]. It isn’t viewstate’s fault that things like this can happen, but it can be very easy to consume a control that could end up hurting the performance of your application.In addition, many times the markup rendered by server controls aren’t always ideal and there is little control over that without having to redo its rendering completely.
  6. Estimated Time: 2 minutesMVC is a design pattern that stands for Model-View-Controller. What is strives to do is separate the concerns of an application’s presentation layer by assigning specific roles to the three different components.The Controller is responsible for handling all user input. Once input has been received, the Controller will perform any operations/actions it needs to, which might include interacting with the Model.The Model represents the core concern/logic of the application. Once the Controller retrieves some model data and performs any work with the model/etc it needs to it constructs a presentation model that describes the model in terms the View can understand.The View is the visual representation of the model. It presents the model data to the actual user in a way that is meaningful. In a web application, this would typically be HTML.With these three pieces in place, your presentation layer becomes cleanly separated in such a way that each component can be developed/tested independently.