ASP.NET MVC - tutto quello che avresti voluto sapere
-
Upload
andreadottor -
Category
Technology
-
view
3.005 -
download
4
description
Transcript of ASP.NET MVC - tutto quello che avresti voluto sapere
Andrea Dottor – Microsoft MVP ASP.NET/IIS
ASP.NET MVCtutto quello che avresti voluto sapere
feedback
10
Andrea DottorMicrosoft MVP ASP.NET/IISEmail: [email protected]: http://www.dottor.net Blog: http://blog.dottor.netTwitter: http://twitter.com/dottor
Chi sono
Materiale: http://blog.dottor.net/post/2014/02/03/Codice-e-slide-della-sessione-ASPNET-MVC-tutto-quello-che-avresti-voluto-sapere.aspx
…di strada ne abbiamo fatta 10 December 2007 ASP.NET MVC CTP
13 March 2009 ASP.NET MVC 1 10 March 2010 ASP.NET MVC 2 13 January 2011 ASP.NET MVC 3 15 August 2012ASP.NET MVC 4 17 October 2013 ASP.NET MVC 5
Evoluzione di ASP.NET MVC
Tutti gli helper (più) utili sono presenti Scaffolding per la creazione delle
View e Controller Integrazione massima con Entity Framework
Autenticazione e autorizzazione ASP.NET Identity "Social authentication"
Tools Visual Studio 2013
Tutto quello che c’è in ASP.NET WebForm e molto di più
Stato dell’arte di ASP.NET MVC
Di solito sentiamo parlare di: Il pattern MVC Routing / friendly url View / Output ottimizzato / HTML5 …
Gli argomenti di oggi: Personalizzazioni/customizzazioni Riutilizzo del codice Produttività Log & profiling
Agenda
Oggi non parleremo di: One ASP.NET ASP.NET Identity Bootstrap Authentication filters Filter overrides Attribute routing
Link:http://www.asp.net/visual-studio/overview/2013/release-notes#TOC10
Novità in ASP.NET MVC 5
– Personalizzazioni– Riutilizzo del codice– Produttività– Log & profiling
Il DisplayModeProvider permette di poter avere View distinte per la navigazione da desktop o da mobile Tutto già incluso in ASP.NET MVC
Non devo scrivere nessuna riga di codice, se non quello nella nuova View
Copio la view e la rinomino da Index.cshtml a Index.mobile.cshtml
Personalizzazione View - mobile
Il DisplayModeProvider può essere presonalizzato Possiamo definire nuove regole
Es: Si possono differenziare View a seconda del dispositivo mobile che sta navigando l’applicazione Index.android.cshtml Index.ios.cshtml Index.wp.cshtml
Personalizzazione View – per tipologia di dispositivo
Il DisplayModeProvider non ha limiti Possiamo applicare qualsiasi regola
Es: è possibile utilizzarlo per personalizzare le View per installazione o per (qualsiasi altra cosa) Index.nome-cliente.cshtml Index.culture.cshtml Index.tutto-quello-che-volete.cshtml …
Personalizzazione View – per cliente e/o parametro e/o installazione
demo
Già visti/sentiti con ASP.NET Dynamic Data
Offrono la possibilità di modificare l’output di default di ASP.NET MVC Sia per la visualizzazione tramite
Html.DisplayFor Sia per l’editing con Html.EditorFor
Applicabili ad un qualsiasi tipo Da String, Int32, DateTime fino ad oggetti
complessi come Product, User, …
Un’ulteriore possibilità per il riuso del codice
Uso di EditorTemplate e DisplayTempate
Utili per dare una visualizzazione di default ad oggetti complessi Riutilizzo e condivisione di codice Semplificano la visualizzazione e l'editing
Es: utilizzo del controllo DatePicker per editare le date
Creare all'interno dell'opportuna cartella in View: Una cartella EditorTemplates per i
template da visualizzare in fase di modifica Una cartella DisplayTemplates per i
template utilizzati in sola visualizzazione
Uso di EditorTemplate e DisplayTempate
demo
Anche le View hanno una classe base System.Web.Mvc.WebViewPage
Il runtime di ASP.NET compila le View facendole ereditare dalla loro classe base
Fornisce accesso agli Helper e ad altre proprietà e metodi (vedi intellisense all'interno di una View) @Helper è una proprietà della classe
WebViewPage
Classe base delle View
Può essere modifica andandola a specificare in Views/Web.config
Estendere la classe base per: Avere accesso immediato a nuovi Helper Centralizzare codice
Non usare la classe base come fosse il code-behind di una pagina WebForm
Classe base delle View – accesso a nuove proprietà/helper
<pages pageBaseType="System.Web.Mvc.WebViewPage">
Può essere utilizzata per semplificare l'uso/accesso alle stringhe localizzate Semplificare l’accesso a
HttpContext.GetLocalResourceObject() ES: Esporre un metodo T("key") che
wrappa il tutto
Preso spunto dalla localizzazione di Orchard (e semplificato il tutto)
Classe base delle View – localizzazione
@{ ViewBag.Title = T("Title"); }
<h2>@T("Title")</h2>
demo
Paragonabile al creare uno UserControl in WebForm
Gli helper presenti in MVC non coprono tutte le esigenze
Creare un nuovo Helper quando si ha necessità di riutilizzare lo stesso output
Possono essere portati/riutilizzati tra vari progetti
Semplici da creare e da utilizzare
Custom Helpers
Accesso ai metadati della lambda expression Recupero del nome della proprietà Recupero di eventuali Atrtibuti asociat
Per evitare di inserire gli "using" in ogni View, importare i namespace all'interno del Web.config presente nella cartella Views system.web.webPages.razor > pages >
namespaces
Custom Helpers
var metaData = ModelMetadata.FromLambdaExpression( expression, htmlHelper.ViewData); var propertyName = metaData.PropertyName; var isReadOnly = metaData.IsReadOnly; var isRequired = metaData.IsRequired;
demo
Creato ed utilizzato da StackExchange http://miniprofiler.com/
Cosa profila? An ADO.NET profiler, capable of profiling
calls on raw ADO.NET (SQL Server, Oracle, etc), LINQ-to-SQL, EF (including Code First), Lightspeed and a range of other data access scenarios
A pragmatic Step instrumentation that you can add to code you want to explicitly profile
Simple. Fast. Pragmatic. Useful.
Log & profiling – Mini Profiler
Mini profiler
ELMAH (Error Logging Modules and Handlers) https://code.google.com/p/elmah/
Logging delle unhandled exceptions
Pagina per la visione del logging da remoto
Notifica via email RSS feed degli ultimi errori
Log & profiling – ELMAH
ELMAH
http://getglimpse.com/ Debugger client-side
Visualizza una barra nel browser simile alla Developer Toolbar o a Firebug
Completamente in JavaScript, Html e CSS
Route bedugger Trace viewer EF / SQL profiler
Log & profiling – Glimpse
Glimpse
demo
feedback
10
• Materiale: http://blog.dottor.net/post/2014/02/03/Codice-e-slide-della-sessione-ASPNET-MVC-tutto-quello-che-avresti-voluto-sapere.aspx
Email: [email protected]: http://www.dottor.net Blog: http://blog.dottor.netTwitter: http://twitter.com/dottor
Contatti