[CLPE] Novidades do Asp.net mvc 2

Post on 24-May-2015

1.412 views 0 download

Transcript of [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

AgendaAgenda

• Resumo• Slide do obrigado!

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

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

ASP.NETDynamic Data

ASP.NETWebForms

ASP.NETMVC

Presentation

RuntimeASP.NET

Core

WebForms is great, but

options are good…

WebForms is great, but

options are good…

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

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

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

Controller(Input)

Model(Logic)

View(Presentation)

Separação de interesses!

O Padrão MVCO Padrão MVC

Request

View

Controller

Response

ControllerHandles input(HTTP requests)

ViewVisually representsthe model

Por outro ângulo…Por outro ângulo…

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

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)

ASP.NET MVC 2.0ASP.NET MVC 2.0

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

Á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

Á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

ÁreasÁreas

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

HTML HelpersHTML Helpers

ouAntes

Agora

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

TemplatesTemplates

DataAnnotationsHTMLHelpersDataAnnotationsHTMLHelpers

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)

Classes de ValidaçãoClasses de Validação

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; }}

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

HttpPostAttributeHttpPostAttribute

Antes:

Agora:

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

[HttpPost] public ActionResult Create(Post post)

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)

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

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.

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.

ExtensibilidadeExtensibilidade

ControllerBuilder

ControllerFactory

Controller

ViewEngine

View

ControllerActionInvoker

ActionResult

ActionFilters

Model Binders

Qualquer parte pode ser trocada!

http://www.asp.net/mvc

OpenSource!

http://codeplex.com/aspnet

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.

• 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

Daniel Ferreiradfsdaniel@msn.com