Upload
felipe-pimentel
View
1.412
Download
0
Embed Size (px)
Citation preview
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 [email protected]