[CLPE] Novidades do Asp.net mvc 2

37
Conheça o ASP.NET MVC 2 Daniel Ferreira MSP | MCP | MCTS | MCPD C.E.S.A.R @dfsdaniel

Transcript of [CLPE] Novidades do Asp.net mvc 2

Page 1: [CLPE] Novidades do Asp.net mvc 2

Conheça oASP.NET MVC 2

Conheça oASP.NET MVC 2

Daniel FerreiraMSP | MCP | MCTS | MCPDC.E.S.A.R

@dfsdaniel

Page 2: [CLPE] Novidades do Asp.net mvc 2

AgendaAgenda

• Resumo• Slide do obrigado!

Page 3: [CLPE] Novidades do Asp.net mvc 2

Há algum tempo atrás…Há algum tempo atrás…

Caching Modules

HandlersIntrinsics

Pages Controls

Globalization

Profile

Master Pages

MembershipRoles

Etc.

ASP.NET

Um único framework para desenvolvimento web

Page 4: [CLPE] Novidades do Asp.net mvc 2

O ASP.NET Hoje!O ASP.NET Hoje!

ASP.NETDynamic Data

ASP.NETWebForms

ASP.NETMVC

Presentation

RuntimeASP.NET

Core

Page 5: [CLPE] Novidades do Asp.net mvc 2

WebForms is great, but

options are good…

WebForms is great, but

options are good…

Page 6: [CLPE] Novidades do Asp.net mvc 2

Master Page

Control

Control

UIPresentation LogicBusiness LogicData Access

Quem faz o que?Como e quando?

Control

ControlPage

Control

Control

Control

Control

Sem divisão de responsabilidadesSem divisão de responsabilidades

Page 7: [CLPE] Novidades do Asp.net mvc 2

Abstração de controles pode não ser uma boa idéia…

Abstração de controles pode não ser uma boa idéia…

Page 8: [CLPE] Novidades do Asp.net mvc 2

Controller(Input)

Model(Logic)

View(Presentation)

Separação de interesses!

O Padrão MVCO Padrão MVC

Page 9: [CLPE] Novidades do Asp.net mvc 2

Request

View

Controller

Response

ControllerHandles input(HTTP requests)

ViewVisually representsthe model

Por outro ângulo…Por outro ângulo…

Page 10: [CLPE] Novidades do Asp.net mvc 2

O ASP.NET MVC FrameworkO ASP.NET MVC Framework

Namespace: System.Web.MvcUm novo template de projeto no Visual StudioUma nova maneira de desenvolver com ASP.NETNão é uma nova versão dos webformsFoco na arquitetura do projeto

Page 11: [CLPE] Novidades do Asp.net mvc 2

O ASP.NET MVC FrameworkO ASP.NET MVC Framework

Roadmap:Pré da versã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é da versão 2 VS 2008 e VS 2010 (jul/09)Versão 2 VS 2008 e VS 2010 (primeiro trimestre de 2010)

Page 12: [CLPE] Novidades do Asp.net mvc 2

ASP.NET MVC 2.0ASP.NET MVC 2.0

Page 13: [CLPE] Novidades do Asp.net mvc 2

Novidades da versão 2.0Novidades da versão 2.0

Agrupamento por áreas in-the-boxData Annotations ValidationTemplates Helpers HTMLHttpPostAttributeAdição do DefaultValueAttributeClient-side validationRequireHttpsAttributeModel Validation ProvidersMetadata Providers

Page 14: [CLPE] Novidades do Asp.net mvc 2

Áreas – Preview 1Áreas – Preview 1

Partição e agrupamento de funcionalidades por áreas;Permite maior modularidade e separação.Suporte nativo a URLs mais simpáticas:

“/Area1/Controlador1” ou “/Area2/Controlador1”

14

Page 15: [CLPE] Novidades do Asp.net mvc 2

Áreas – Preview 2Áreas – Preview 2

Suporte “in-the-box” sem necessidade de múltiplos projetos“Add Area” DialogRegistro de rota dinamicamente (AreaRegistration.cs)

15

Page 16: [CLPE] Novidades do Asp.net mvc 2

ÁreasÁreas

Page 17: [CLPE] Novidades do Asp.net mvc 2

HTML HelpersHTML 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()

Page 18: [CLPE] Novidades do Asp.net mvc 2

HTML HelpersHTML Helpers

ouAntes

Agora

Page 19: [CLPE] Novidades do Asp.net mvc 2

TemplatesTemplates

Permite customizar a exibição dos itens do EditorFor()Não precisa colocar o IDUso do atributo UIHint no object modelReaproveitamento de código

Page 20: [CLPE] Novidades do Asp.net mvc 2

TemplatesTemplates

Page 21: [CLPE] Novidades do Asp.net mvc 2

DataAnnotationsHTMLHelpersDataAnnotationsHTMLHelpers

Page 22: [CLPE] Novidades do Asp.net mvc 2

ValidaçãoValidação

Suporte nativo para validação através de DataAnnotationDeclaração de regras nos Object ModelsNamespace System.ComponentModel.DataAnnotationsValidationAttribute como classe base para criação de atributos de validação personalizadosSuporte a outras validações como o Castle Validator, EntLib Validation, etc)

Page 23: [CLPE] Novidades do Asp.net mvc 2

Classes de ValidaçãoClasses de Validação

Page 24: [CLPE] Novidades do Asp.net mvc 2

Validação com DataAnnotationsValidação com DataAnnotations

public class Customer{ [Required] public string Name { get; set; }

[Range(1, 120, ErrorMessage="Invalid age")] public int Age { 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; }}

Page 25: [CLPE] Novidades do Asp.net mvc 2

Client-side validationClient-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

Page 26: [CLPE] Novidades do Asp.net mvc 2

HttpPostAttributeHttpPostAttribute

Antes:

Agora:

[AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(Post post)

[HttpPost] public ActionResult Create(Post post)

Page 27: [CLPE] Novidades do Asp.net mvc 2

DefaultValueAttributeDefaultValueAttribute

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 = "" });

public ActionResult Create([DefaultValueAttribute(5)] int pagina)

Page 28: [CLPE] Novidades do Asp.net mvc 2

RequireHttpsAttributeRequireHttpsAttribute

Por padrão, as requisições são realizadas com chamadas non-SSL (HTTP)

Novo atributo de classe RequireHttpsAttribute que permite direcionar as ações dos controllers para requisições HTTP seguras (SSL-Enabled – HTTPS)

28

Page 29: [CLPE] Novidades do Asp.net mvc 2

ProvidersProviders

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 Metadata providers.

Page 30: [CLPE] Novidades do Asp.net mvc 2

ProvidersProviders

ModelValidator Providers

Também é possível criar seus próprios providers de validação com mapeamentos e regras personalizadasO padrão do MVC também é usando o DataAnnotations.

Page 31: [CLPE] Novidades do Asp.net mvc 2

ExtensibilidadeExtensibilidade

ControllerBuilder

ControllerFactory

Controller

ViewEngine

View

ControllerActionInvoker

ActionResult

ActionFilters

Model Binders

Qualquer parte pode ser trocada!

Page 32: [CLPE] Novidades do Asp.net mvc 2

http://www.asp.net/mvc

Page 33: [CLPE] Novidades do Asp.net mvc 2

OpenSource!

Page 34: [CLPE] Novidades do Asp.net mvc 2

http://codeplex.com/aspnet

Page 35: [CLPE] Novidades do Asp.net mvc 2

MindsetMindset

- Nós precisamos de um controle Repeater!

- Nós já o temos, se chama: laço de foreach.

Conversa entre desenvolvedores da Microsoft, segundo relatado por Scott

Hanselman, do time do MVC.

Page 36: [CLPE] Novidades do Asp.net mvc 2

• O ASP.NET MVC é uma nova opção para desenvolvimento web

• Está evoluíndo rápido

• Separação de responsabilidades

• Muitos controles em suas mãos, use com moderação!

ResumindoResumindo

Page 37: [CLPE] Novidades do Asp.net mvc 2

Daniel [email protected]