SlideShare a Scribd company logo
1 of 23
Microsoft ASP.NET MVC 2 Andrea Dottor – Microsoft MVP ASP/ASP.NET
09/04/2010 www.xedotnet.org 2 MVC o Web Form? Cos’è il pattern MVC? In dettaglio Model View  Controller Come si usa ASP.NET MVC? Cosa devo conoscere per usare MVC? Perchè/quando usare ASP.NET MVC?
09/04/2010 www.xedotnet.org 3 MVC non sostituisce le WebForm MVC si pone come alternativa ad WebForm Si poteva, e si può, controllare il codice HTML prodotto anche con ASP.NET WebForm CSS Friendly Adapter Adaptive Rendering ASP.NET 4.0  ... Si dovrà capire dov’è il vantaggio ad utilizzare MVC e dove WebForm MVC non sostituisce le WebForm
ASP.NET MVC ASP.NET MVC vsWebForm ASP.NETWebForm Applicazioni RAD Non richiede particolari conoscenze del web ViewState e PostBack Modello Event-Driven Facilitàcontrollo HTML e Javascript Pensato per scenari SEO e REST Facilmentetestabile CoreASP.NET ,[object Object]
MasterPage
Output Cache
Autenticazione e Autorizzazione
Globalizzazione
Routing,[object Object]
09/04/2010 www.xedotnet.org 6 MVC – il pattern Non è un pattern recente ma risale agli anni ‘70 Originalmente utilizzato in Smalltalk per la realizzazione di interfacce grafiche Permette di separare i compiti all’interno dell’applicazione tra Model, View e Controller MVC – il pattern
09/04/2010 www.xedotnet.org 7 MODEL Contiene l’object model dell’applicazione Contiene lo strato di accesso ai dati Contiene le regole di validazione MODEL (teoria)
09/04/2010 www.xedotnet.org 8 ASP.NET MVC – MODEL Può anche essere composto utilizzando LINQ to SQL oppure Entity Framework Per convenzione il nome del file dovrebbe corrispondere a quello del rispettivo controller: <Nome del model>Model Contenuto nella cartella ~/Models/ Tramite attributi nelle classi e proprietà vengono specificate le regole di validazione e di visualizzazione Stessi attributi utilizzati anche in ASP.NET Dynamic Data MODEL (nel microsoft mvc)
09/04/2010 www.xedotnet.org 9 VIEW Si occupa di renderizzare le informazioni Non devono contenere logica Non devono eseguire l’accesso ai dati I dati da visualizzare vengono forniti dal controller VIEW (teoria)
09/04/2010 www.xedotnet.org 10 ASP.NET MVC – VIEW Paragonabile al HTML markup di una pagina ASP.NET Può essere composto da: ViewPage ViewMasterPage Devono essere create in ~/View/<ControllerName>/ ~/View/Shared/ VIEW (nel microsoft mvc)
09/04/2010 www.xedotnet.org 11 ASP.NET MVC - PARTIAL VIEW ViewUserControl Si possono vedere come gli UserControl di ASP.NET Possono avere acesso agli stessi dati della parent View Html.RenderPartial("CommentInsert"); Oppure accesso a parte dei dati del model Html.RenderPartial("DisplayNewsDescription", Model.Comments); I dati modificati nella partial View, non modificano i dati della parent View Hanno solamente HTML markup (come per le View) PARTIAL VIEW (nel microsoft mvc)
09/04/2010 www.xedotnet.org 12 CONTROLLER Si occupa dell’iterazione tra Model e View Riceve l’input dell’utente e lo elabora per fornire i dati corretti alla View CONTROLLER (teoria)
09/04/2010 www.xedotnet.org 13 ASP.NET MVC – CONTROLLER Contenuto nella cartella ~/Controllers/ La classe deve ereditare dalla classe Controller Il nome deve essere <Nome del controller>Controller Esempio public class AccountController : Controller Deve contenere almeno un metodo per ogni action Esempio: public ActionResult LogOn() public ActionResult LogOn(LogOnModel model, string returnUrl) CONTROLLER (nel microsoft mvc)
MVC – il pattern 09/04/2010 www.xedotnet.org 14 Model http://xedotnet.org/Products/http://xedotnet.org/Products/Edit/5 Controller View ProductsController Product (Model) SQL Products (View) /View/Products/Index.aspx /View/Products/Edit.aspx
09/04/2010 www.xedotnet.org 15 Passaggio di dati controller -> view Attraversoil dictionary Controller.ViewData ViewData["Message"] = "Welcome to ASP.NET MVC!"; La paginaereditadaSystem.Web.Mvc.ViewPage UtilizzandoStrongly Typed Classes News news = newsRepository.GetNewsById(id);return View(news); La paginapuòereditaredaSystem.Web.Mvc.ViewPage<T> per facilitare la scrittura del codice nella View Passaggio di dati controller -> view
09/04/2010 www.xedotnet.org 16 Passaggio di dati view -> controller Submit della form (HttpPost) Richiesta tramite AJAX Passaggio di dati view -> controller <% using (Html.BeginForm()) {%> <fieldset>     <%= Html.TextBoxFor(model => model.Author)%>     <p>         <input type="submit" value="Create" />     </p> </fieldset> <% } %> var action = "/Admin/News/Delete/" + recordId; var request = new Sys.Net.WebRequest();    request.set_httpVerb("DELETE");    request.set_url(action); request.add_completed(deleteCompleted);    request.invoke();
09/04/2010 www.xedotnet.org 17 HTML Helper Permette di agevolare la creazione di controlli HTML per la visualizzazione/modifica dei dati del model V 1.0 Solo tramite stringhe Esegnalazione errori solo a run-time V 2.0 Uso di lambda expression Segnalazione errori a compile-time HTML Helper
Validazione V 1.0  Server-side Validation V 2.0 Client-side Validation Data Annotation Model Validation Provider  custom validation provider Validazione 09/04/2010 www.xedotnet.org 18
09/04/2010 www.xedotnet.org 19 Areas Permette di suddividere l’applicazione in sotto-applicazioni MVC Maggiore separazione dei compiti/ruoli Maggiore controllo del codice nell’applicazione Routing Controllers, Models e View Permessi Areas

More Related Content

Similar to ASP.NET MVC 2.0

What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiAndrea Dottor
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAndrea Balducci
 
Seam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoSeam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoJava User Group Roma
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5JBug Italy
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?Giorgio Di Nardo
 
What's new in ASP.NET 4.0
What's new in ASP.NET 4.0What's new in ASP.NET 4.0
What's new in ASP.NET 4.0XeDotNet
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockoutDotNetCampus
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)Luca Milan
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 

Similar to ASP.NET MVC 2.0 (20)

Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community Tour
 
MVC2: non solo tecnologia
MVC2: non solo tecnologiaMVC2: non solo tecnologia
MVC2: non solo tecnologia
 
Seam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoSeam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano Ciccazzo
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
 
Introduzione a Struts
Introduzione a StrutsIntroduzione a Struts
Introduzione a Struts
 
ASP.NET MVC: Full Throttle
ASP.NET MVC: Full ThrottleASP.NET MVC: Full Throttle
ASP.NET MVC: Full Throttle
 
ASP.NET MVC Intro
ASP.NET MVC IntroASP.NET MVC Intro
ASP.NET MVC Intro
 
What's new in ASP.NET 4.0
What's new in ASP.NET 4.0What's new in ASP.NET 4.0
What's new in ASP.NET 4.0
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
Yagwto
YagwtoYagwto
Yagwto
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)
 
Presentazione wicket
Presentazione wicketPresentazione wicket
Presentazione wicket
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 

More from XeDotNet

Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)XeDotNet
 
Silverlight 4 - Community Tour (RTM)
Silverlight 4 - Community Tour (RTM)Silverlight 4 - Community Tour (RTM)
Silverlight 4 - Community Tour (RTM)XeDotNet
 
Silverlight 4
Silverlight 4Silverlight 4
Silverlight 4XeDotNet
 
ASP.NET 4.0
ASP.NET 4.0ASP.NET 4.0
ASP.NET 4.0XeDotNet
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQueryXeDotNet
 
Real World State And Notification Broker
Real World State And Notification BrokerReal World State And Notification Broker
Real World State And Notification BrokerXeDotNet
 
Windows Embedded, Segreti E Misteri Delle Piattaforme
Windows Embedded, Segreti E Misteri Delle PiattaformeWindows Embedded, Segreti E Misteri Delle Piattaforme
Windows Embedded, Segreti E Misteri Delle PiattaformeXeDotNet
 
Slverlight Networking (Andrea Boschin)
Slverlight Networking (Andrea Boschin)Slverlight Networking (Andrea Boschin)
Slverlight Networking (Andrea Boschin)XeDotNet
 

More from XeDotNet (8)

Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)Codice di qualità con VS2010 (TDD)
Codice di qualità con VS2010 (TDD)
 
Silverlight 4 - Community Tour (RTM)
Silverlight 4 - Community Tour (RTM)Silverlight 4 - Community Tour (RTM)
Silverlight 4 - Community Tour (RTM)
 
Silverlight 4
Silverlight 4Silverlight 4
Silverlight 4
 
ASP.NET 4.0
ASP.NET 4.0ASP.NET 4.0
ASP.NET 4.0
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
 
Real World State And Notification Broker
Real World State And Notification BrokerReal World State And Notification Broker
Real World State And Notification Broker
 
Windows Embedded, Segreti E Misteri Delle Piattaforme
Windows Embedded, Segreti E Misteri Delle PiattaformeWindows Embedded, Segreti E Misteri Delle Piattaforme
Windows Embedded, Segreti E Misteri Delle Piattaforme
 
Slverlight Networking (Andrea Boschin)
Slverlight Networking (Andrea Boschin)Slverlight Networking (Andrea Boschin)
Slverlight Networking (Andrea Boschin)
 

ASP.NET MVC 2.0

  • 1. Microsoft ASP.NET MVC 2 Andrea Dottor – Microsoft MVP ASP/ASP.NET
  • 2. 09/04/2010 www.xedotnet.org 2 MVC o Web Form? Cos’è il pattern MVC? In dettaglio Model View Controller Come si usa ASP.NET MVC? Cosa devo conoscere per usare MVC? Perchè/quando usare ASP.NET MVC?
  • 3. 09/04/2010 www.xedotnet.org 3 MVC non sostituisce le WebForm MVC si pone come alternativa ad WebForm Si poteva, e si può, controllare il codice HTML prodotto anche con ASP.NET WebForm CSS Friendly Adapter Adaptive Rendering ASP.NET 4.0  ... Si dovrà capire dov’è il vantaggio ad utilizzare MVC e dove WebForm MVC non sostituisce le WebForm
  • 4.
  • 9.
  • 10. 09/04/2010 www.xedotnet.org 6 MVC – il pattern Non è un pattern recente ma risale agli anni ‘70 Originalmente utilizzato in Smalltalk per la realizzazione di interfacce grafiche Permette di separare i compiti all’interno dell’applicazione tra Model, View e Controller MVC – il pattern
  • 11. 09/04/2010 www.xedotnet.org 7 MODEL Contiene l’object model dell’applicazione Contiene lo strato di accesso ai dati Contiene le regole di validazione MODEL (teoria)
  • 12. 09/04/2010 www.xedotnet.org 8 ASP.NET MVC – MODEL Può anche essere composto utilizzando LINQ to SQL oppure Entity Framework Per convenzione il nome del file dovrebbe corrispondere a quello del rispettivo controller: <Nome del model>Model Contenuto nella cartella ~/Models/ Tramite attributi nelle classi e proprietà vengono specificate le regole di validazione e di visualizzazione Stessi attributi utilizzati anche in ASP.NET Dynamic Data MODEL (nel microsoft mvc)
  • 13. 09/04/2010 www.xedotnet.org 9 VIEW Si occupa di renderizzare le informazioni Non devono contenere logica Non devono eseguire l’accesso ai dati I dati da visualizzare vengono forniti dal controller VIEW (teoria)
  • 14. 09/04/2010 www.xedotnet.org 10 ASP.NET MVC – VIEW Paragonabile al HTML markup di una pagina ASP.NET Può essere composto da: ViewPage ViewMasterPage Devono essere create in ~/View/<ControllerName>/ ~/View/Shared/ VIEW (nel microsoft mvc)
  • 15. 09/04/2010 www.xedotnet.org 11 ASP.NET MVC - PARTIAL VIEW ViewUserControl Si possono vedere come gli UserControl di ASP.NET Possono avere acesso agli stessi dati della parent View Html.RenderPartial("CommentInsert"); Oppure accesso a parte dei dati del model Html.RenderPartial("DisplayNewsDescription", Model.Comments); I dati modificati nella partial View, non modificano i dati della parent View Hanno solamente HTML markup (come per le View) PARTIAL VIEW (nel microsoft mvc)
  • 16. 09/04/2010 www.xedotnet.org 12 CONTROLLER Si occupa dell’iterazione tra Model e View Riceve l’input dell’utente e lo elabora per fornire i dati corretti alla View CONTROLLER (teoria)
  • 17. 09/04/2010 www.xedotnet.org 13 ASP.NET MVC – CONTROLLER Contenuto nella cartella ~/Controllers/ La classe deve ereditare dalla classe Controller Il nome deve essere <Nome del controller>Controller Esempio public class AccountController : Controller Deve contenere almeno un metodo per ogni action Esempio: public ActionResult LogOn() public ActionResult LogOn(LogOnModel model, string returnUrl) CONTROLLER (nel microsoft mvc)
  • 18. MVC – il pattern 09/04/2010 www.xedotnet.org 14 Model http://xedotnet.org/Products/http://xedotnet.org/Products/Edit/5 Controller View ProductsController Product (Model) SQL Products (View) /View/Products/Index.aspx /View/Products/Edit.aspx
  • 19. 09/04/2010 www.xedotnet.org 15 Passaggio di dati controller -> view Attraversoil dictionary Controller.ViewData ViewData["Message"] = "Welcome to ASP.NET MVC!"; La paginaereditadaSystem.Web.Mvc.ViewPage UtilizzandoStrongly Typed Classes News news = newsRepository.GetNewsById(id);return View(news); La paginapuòereditaredaSystem.Web.Mvc.ViewPage<T> per facilitare la scrittura del codice nella View Passaggio di dati controller -> view
  • 20. 09/04/2010 www.xedotnet.org 16 Passaggio di dati view -> controller Submit della form (HttpPost) Richiesta tramite AJAX Passaggio di dati view -> controller <% using (Html.BeginForm()) {%> <fieldset> <%= Html.TextBoxFor(model => model.Author)%> <p> <input type="submit" value="Create" /> </p> </fieldset> <% } %> var action = "/Admin/News/Delete/" + recordId; var request = new Sys.Net.WebRequest(); request.set_httpVerb("DELETE"); request.set_url(action); request.add_completed(deleteCompleted); request.invoke();
  • 21. 09/04/2010 www.xedotnet.org 17 HTML Helper Permette di agevolare la creazione di controlli HTML per la visualizzazione/modifica dei dati del model V 1.0 Solo tramite stringhe Esegnalazione errori solo a run-time V 2.0 Uso di lambda expression Segnalazione errori a compile-time HTML Helper
  • 22. Validazione V 1.0 Server-side Validation V 2.0 Client-side Validation Data Annotation Model Validation Provider  custom validation provider Validazione 09/04/2010 www.xedotnet.org 18
  • 23. 09/04/2010 www.xedotnet.org 19 Areas Permette di suddividere l’applicazione in sotto-applicazioni MVC Maggiore separazione dei compiti/ruoli Maggiore controllo del codice nell’applicazione Routing Controllers, Models e View Permessi Areas
  • 24. HTML.RenderAction HTML.RenderAction Possibilità di renderizzare una porzione della pagina utilizzando una PartilaView popolata da una specifica action (di uno specifico controller) V1.0: Html.RenderPartial riutilizzo solo una porzione della view V 2.0: Html.RenderAction e Html.Action Chiamo un Action Method dalla View Posso riutilizzare anche la Business Logic http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx 09/04/2010 www.xedotnet.org 20
  • 25. 09/04/2010 www.xedotnet.org 21 jQuery E’ incluso nel template di progetto MVC Libreria javascript di terze parti (Microsoft ha iniziato a supportarne lo sviluppo) Fornisce un framework client che permette di manipolare con facilità di DOM della pagina, stili e animazioni. jQuery
  • 26. Controller Asincroni Possibilità di utilizzare Controller Asincroni Gestione simile a quella delle Web Form Situazioni di thread Starvation Thread del pool «schedula» l’esecuzione In genere: I/O usato molto No se viene usata tanta CPU Si vuole cancellare un’operazione Long-Running http://msdn.microsoft.com/en-us/library/ee728598(VS.100).aspxhttp://blog.stevensanderson.com/2010/01/25/measuring-the-performance-of-asynchronous-controllers/ 09/04/2010 www.xedotnet.org 22
  • 27. Link 09/04/2010 www.xedotnet.org 23 Andrea Dottor blog.dottor.net andrea@dottor.net www.dottor.net twitter.com/dottor