Asp.Net MVC 2 Visual Studio 2010 Community Launch Tour Andrea Balducci http://www.ienumerable.it http://twitter.com/andreabalducci
Dec 06, 2014
Asp.Net MVC 2Visual Studio 2010 Community Launch Tour
Andrea Balduccihttp://www.ienumerable.ithttp://twitter.com/andreabalducci
Come funziona MVC?
Request
Controller
Response
Model
View
Asp.Net MVC
viene passato alla
Identifica ed istanzia
prepara il
determina la
genera la
Inviata al server
http://msdn.microsoft.com/en-us/library/dd381412.aspx
Piattaforma di sviluppo
Download separato
http://bit.ly/bg04yY
Compreso
Framework
http://www.asp.net/mvc/
Asp.Net MVC2 è disponibile dalla versione 3.5 sp1 di Microsoft .Net Framework.
•Non è parte integrante del framework
•Installabile tramite Web Platform Installer
•Bin deployable
•Standalone installer
Open Sourced
http://aspnet.codeplex.com/releases/view/41742
OSI-compliant open-source license
Routing
http://bit.ly/9gyPkM
In Asp.Net 4 il sistema di routing è utilizzabile anche per applicazioni webforms.
Asp.Net MVC 1/2
WebForms 4
Areas
http://msdn.microsoft.com/en-us/library/ee671793.aspx
Organizzazione dei progetti in aree funzionali
In ogni area è possibile definire controllers, models e views
Le aree vanno attivate in fasi di startup dell’applicazione web.
Areas - Registrazione
http://msdn.microsoft.com/en-us/library/ee671793.aspx
Classe <AreaName>AreaRegistration:• Nome dell’area• Routes
Areas - Routes
http://msdn.microsoft.com/en-us/library/ee671793.aspx
Registrare ogni route con il relativo namespace per evitare collisioni
Areas - Routes
http://msdn.microsoft.com/en-us/library/ee671793.aspx
Registrazione con named argument (C# 4)
Registrazione classica
Areas - ActionLink
http://msdn.microsoft.com/en-us/library/ee671793.aspx
•Per “entrare” in un’area è necessario indicarne il nome
•Se l’area non è indicata la default è l’area corrente.
•Per tornare alla “root” indicare {area=String.Empty}
{Areas – Demo}
Strongly-Typed UI Helpers
http://bit.ly/8ZUEom
Permettono l’utilizzo di lambda expressions per indicare la proprietà del model
Vantaggi•Refactoring facilitato•Messaggi di errore a compile time (se è abilitata la compilazione delle views)•Intellisense
Data Annotations
http://bit.ly/L5J9
Permettono di decorare il modello dati dell’applicazione tramite attributiE’possibile, per esempio, indicare che un valore è obbligatorio o che una stringa richiede un editor multiline
Data Annotations
http://bit.ly/1x4TSC
Q: Perché MultilineText e non TextArea?R: DataAnnotations è indipendente dal framework della UI
Q: Se è indipendente dalla UI come viene gestita da MVC?R: DataAnnotationsModelMetadataProvider DataAnnotationsModelValidatorProvider
Q: Se il mio model è autogenerato come posso annotarlo?R: [MetadataType(typeof(MyModelMetadata))]
ValidazioneLa validazione è applicata su tutto il modello, indipendentemente dalle proprietà presenti nella form inviata al server.
Può far uso delle DataAnnotations - [Required] - [Range] - [StringLength] - [RegularExpression]
ValidazioneUna proprietà non nullable è implicitamente required.Indicare comunque [Required] permette di customizzare il messaggio di errore.
Validazione Client Side
http://bit.ly/5WILHI
MVC2 supporta nativamente la validazione client side (qualora javascript sia abilitato) sfruttando gli stessi meccanismi definiti per la validazione server side.
Per attivare la validazione client-side:1) includere gli necessari script necessari2) chiamare Html.EnableClientSideValidation()
{Validazione– Demo}
Dynamic Scaffolding
http://bit.ly/3hPK7H
E’ possibile autogenerare le form di inserimento e visualizzazione dati utilizzando Html.EditorForModel() e Html.DisplayForModel()
Templating
http://bit.ly/3Vwjvj
Il codice HTML generato dagli helper Html.DisplayFor e Html.EditFor può essere customizzato tramite templates.Il template è una partial view che ha per nome il tipo del dato da rappresentare ed è memorizzato nelle cartelle EditorTemplates o DisplayTemplates
{Scaffolding – Demo}
RenderAction
http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
L’introduzione dell’helper Html.RenderAction rende possibile la componentizzazione dell’applicazione.
In questo modo anche le logiche di business diventano riutilizzabili eliminando duplicazioni di codice
E’ possibile limitare l’utilizzo di una determinata action alla sola RenderAction (evitando così di esporla tramite url) decorando l’action con [ChildActionOnly]
{RenderAction – Demo}
Controller Asincroni
http://msdn.microsoft.com/en-us/library/ee728598.aspx
I controller asincroni permettono di ottimizzare l’utilizzo delle risorse del webserver.
•Le operazioni long running tengono impegnati i thread.•I thread associati all’application pool sono limitati•Thread Starvation -> 503 Server too busy
L’utilizzo dei controller asincroni permette di delegare l’elaborazione ad un thread secondario, liberando il thread di elaborazione della request.
Controller Asincroni
http://msdn.microsoft.com/en-us/library/ee728598.aspx
{AsyncController – Demo}
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Visual Studio, the Visual Studio logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Slide e demo su