ASP.NET MVC 2.0
Post on 28-Nov-2014
2397 Views
Preview:
DESCRIPTION
Transcript
In collaborazione con
Microsoft ASP.NET MVC 2
» Andrea Dottor – Microsoft MVP ASP/ASP.NET
www.xedotnet.org 2
AgendaAgenda
09/04/2010
» 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?
www.xedotnet.org 309/04/2010
» 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 vs WebForm
»Facilità controllo HTML e Javascript »Pensato per scenari SEO e REST»Facilmente testabile
» ASP.NET WebForm»Applicazioni RAD»Non richiede particolari conoscenze del web»ViewState e PostBack»Modello Event-Driven
Core ASP.NET»Linguaggi C#, VB.NET»MasterPage»Output Cache»Autenticazione e Autorizzazione»Globalizzazione»Routing
www.xedotnet.org 509/04/2010
» Gli obiettivi di ASP.NET MVC• Realizzare applicazioni che seguano il pattern
Model-View-Controller• Separazione dei compiti all’interno dell’applicazione
• Completo controllo del codice HTML prodotto• Consente di avere URL SEO Friendly• Agevolare il Test Driven Development• Facilità di integrazione con ASP.NET AJAX e jQuery
Gli obiettivi di MVC Framework
www.xedotnet.org 609/04/2010
» 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
Model
ControllerView
www.xedotnet.org 709/04/2010
» MODEL• Contiene l’object model dell’applicazione• Contiene lo strato di accesso ai dati• Contiene le regole di validazione
MODEL (teoria)
Model
ControllerView
www.xedotnet.org 809/04/2010
» 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)
www.xedotnet.org 909/04/2010
» 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)
Model
ControllerView
www.xedotnet.org 1009/04/2010
» 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)
www.xedotnet.org 1109/04/2010
» 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)
www.xedotnet.org 1209/04/2010
» 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)
Model
ControllerView
www.xedotnet.org 1309/04/2010
» 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 actionEsempio:
• public ActionResult LogOn()• public ActionResult LogOn(LogOnModel model, string returnUrl)
CONTROLLER (nel microsoft mvc)
www.xedotnet.org 14
MVC – il pattern
09/04/2010
Controller
View
Model SQL
http://xedotnet.org/Products/http://xedotnet.org/Products/Edit/5
ProductsController Product (Model)
Products (View)/View/Products/Index.aspx/View/Products/Edit.aspx
www.xedotnet.org 1509/04/2010
» Passaggio di dati controller -> view• Attraverso il dictionary Controller.ViewData • ViewData["Message"] = "Welcome to ASP.NET MVC!";• La pagina eredita da System.Web.Mvc.ViewPage
• Utilizzando Strongly Typed Classes• News news = newsRepository.GetNewsById(id);
return View(news);• La pagina può ereditare da System.Web.Mvc.ViewPage<T>
per facilitare la scrittura del codice nella View
Passaggio di dati controller -> view
www.xedotnet.org 1609/04/2010
» Passaggio di dati view -> controller• Submit della form (HttpPost)
• Richiesta tramite AJAX
Passaggio di dati view -> controller
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();
<% using (Html.BeginForm()) {%><fieldset> <%= Html.TextBoxFor(model => model.Author)%> <p> <input type="submit" value="Create" /> </p></fieldset><% } %>
www.xedotnet.org 1709/04/2010
» 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
www.xedotnet.org 1909/04/2010
» 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
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
www.xedotnet.org 2109/04/2010
» 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
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
www.xedotnet.org 23
blog:
email:
web:
twitter:
Link
09/04/2010
»Andrea Dottor
blog.dottor.net
andrea@dottor.net
www.dottor.net
twitter.com/dottor
top related