ASP.NET MVC: Full Throttle        Andrea Saltarello        C.T.O.        http://blogs.ugidotnet.org/pape        http://twi...
SponsorSponsor Platinum Sponsor Gold
Agenda•   #ifdef NIUBBO MVC 1-2-3•   Controller->View•   View->Controller•   AspNetMvc.More();
Model View ControllerFormulato nel 1979 da Trygve Reenskaug, membro  del team Smalltalk @ Xerox PARCLa prima motivazione d...
Model view controller                                    Model    State                                                 St...
MVC: falsi miti• Lo scopo del Controller non è di  separare la View dal Model.• La responsabilità del Controller è di fare...
Model 2• In a Model 2 application, requests from the client  browser are passed to the controller, which is a  servlet. Th...
Introduzione a ASP.NET MVC (1/4)http://host/webapp/Customer/Detail/1
Introduzione a ASP.NET MVC (2/4)http://host/webapp/Customer/Detail/1
Introduzione a ASP.NET MVC (3/4)http://host/webapp/Customer/Detail/1
Introduzione a ASP.NET MVC (4/4)http://host/webapp/Customer/Detail/1
Navigation FlowLe action restituiscono un valore di tipo  ActionResult. “Pragmapolimorficamente”  parlando:•  ViewResult. ...
View: i gustiMVC utilizza view engine perrenderizzare delle view basate suparadigmi differenti. Out of the box:• Ye Olde W...
ASP.Net MVC
Dati: Controller->ViewPer trasferire dati dal controller alla view:• ViewData• YourView.Model = viewModel• ViewBag.YourPro...
ASP.Net MVC
Dati: View->ControllerPer trasferire dati dalla view al controller:• Parametri della action (convention over  configuratio...
ASP.Net MVC
Data Entry, a.k.a. «Gioca Jouer»• Mostrare!• Validare!• Jquery!
Data Entry: MostrareBuilt in:• Usare i metodi helper per definire  “campi” e «label»• [Opzionale]: EditorTemplates,  Displ...
Data Entry: Validare!• Taggare il ViewModel mediante  DataAnnotations, es:  – RegularExpression  – Required  – StringLengt...
Data Entry: JQuery!• Client side validation   – Inclusione degli script JS   – <% Html.EnableClientSideValidation();     %...
ASP.Net MVC
AspNetMvc.More();Esempi:• [FX4 only]<%: … %> (equivalente a <% =Html.Encode(…)  %>)• IoC• Custom ActionResult:   – Generar...
Demo code: NSKProgetto open source (licenza CPL)disponibile su CodePlex:http://nsk.codeplex.com
ASP.NET MVC: Full Throttle
Upcoming SlideShare
Loading in …5
×

ASP.NET MVC: Full Throttle

2,263 views

Published on

A prima vista, MVC “is all about the presentation layer”. In realtà, per trarre il massimo giovamento da questo toolkit è necessario progettare l’intera soluzione utilizzando criteri ad hoc.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,263
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

ASP.NET MVC: Full Throttle

  1. 1. ASP.NET MVC: Full Throttle Andrea Saltarello C.T.O. http://blogs.ugidotnet.org/pape http://twitter.com/andysal74 http://slideshare.net/andysal Managed Designs s.r.l.http://creativecommons.org/licenses/by-nc-nd/2.5/
  2. 2. SponsorSponsor Platinum Sponsor Gold
  3. 3. Agenda• #ifdef NIUBBO MVC 1-2-3• Controller->View• View->Controller• AspNetMvc.More();
  4. 4. Model View ControllerFormulato nel 1979 da Trygve Reenskaug, membro del team Smalltalk @ Xerox PARCLa prima motivazione di design è:Separare gli aspetti di presentazione daquelli di dominio.E la “radice concettuale” di tutti gli attuali pattern:Model View Presenter, Presenter-First, Passive View, Presentation Abstraction Control, Presentation Model Model View ViewModel...
  5. 5. Model view controller Model State State Query Change Change Notification View Selection View Controller User GesturesMethod InvocationsEvents
  6. 6. MVC: falsi miti• Lo scopo del Controller non è di separare la View dal Model.• La responsabilità del Controller è di fare da mediatore tra lutente e lapplicazione, non tra la View e il Model.• Spesso si parla di MVC, ma si intende Model 2
  7. 7. Model 2• In a Model 2 application, requests from the client browser are passed to the controller, which is a servlet. The controller decides which view (JSP) it will pass the request to. The view then invokes methods in a JavaBean (which may access a database) and returns the Response object to the Web container, which is then passed on to the client browser. [Wikipedia]• Legenda:• Servlet->HttpHandler->Front Controller [P of EAA, 344]• JSP->Controller->Page Controller [P of EAA, 333]
  8. 8. Introduzione a ASP.NET MVC (1/4)http://host/webapp/Customer/Detail/1
  9. 9. Introduzione a ASP.NET MVC (2/4)http://host/webapp/Customer/Detail/1
  10. 10. Introduzione a ASP.NET MVC (3/4)http://host/webapp/Customer/Detail/1
  11. 11. Introduzione a ASP.NET MVC (4/4)http://host/webapp/Customer/Detail/1
  12. 12. Navigation FlowLe action restituiscono un valore di tipo ActionResult. “Pragmapolimorficamente” parlando:• ViewResult. Restituito dal metodo View.• PartialViewResult. Restituito dal metodo PartialView.• ContentResult. Restituito dal metodo Content.• JsonResult. Restituito dal metodo Json.• EmptyResult. Restituito dalle action che vogliano restituire “null”.• YourOwnPersonalResult (semi-cit ), restituito da una factory ad hoc• RedirectToRouteResult. Restituito dai metodi RedirectToAction e RedirectToRoute.• RedirectResult. Restituito dal metodo Redirect.In MVC 3, i metodi Redirect sono disponibili anche nel gusto «Permanent»
  13. 13. View: i gustiMVC utilizza view engine perrenderizzare delle view basate suparadigmi differenti. Out of the box:• Ye Olde WebFormViewEngine• Un Razor nuovo di pacca [MVC3]
  14. 14. ASP.Net MVC
  15. 15. Dati: Controller->ViewPer trasferire dati dal controller alla view:• ViewData• YourView.Model = viewModel• ViewBag.YourProperty = yourValue [MVC3]
  16. 16. ASP.Net MVC
  17. 17. Dati: View->ControllerPer trasferire dati dalla view al controller:• Parametri della action (convention over configuration): – ogni elemento in query string è mappato su un parametro omonimo – ogni elemento del <form /> è mappato su un parametro omonimo• FormCollection• >>>Model binding<<<
  18. 18. ASP.Net MVC
  19. 19. Data Entry, a.k.a. «Gioca Jouer»• Mostrare!• Validare!• Jquery!
  20. 20. Data Entry: MostrareBuilt in:• Usare i metodi helper per definire “campi” e «label»• [Opzionale]: EditorTemplates, DisplayTemplates
  21. 21. Data Entry: Validare!• Taggare il ViewModel mediante DataAnnotations, es: – RegularExpression – Required – StringLength – Compare [MVC3] – Remote [MVC3]• Posizionare Html.ValidationMessageFor<>() e/o Html.ValidationSummary()• [Opzionale] Impostare .input-validation- error nel css
  22. 22. Data Entry: JQuery!• Client side validation – Inclusione degli script JS – <% Html.EnableClientSideValidation(); %>• JQuery plug-in, es: – JQuery UI (tab, datepicker, …) – JQGrid• Assert.IsTrueLove(EditorTemplates, JQuery)
  23. 23. ASP.Net MVC
  24. 24. AspNetMvc.More();Esempi:• [FX4 only]<%: … %> (equivalente a <% =Html.Encode(…) %>)• IoC• Custom ActionResult: – Generare Thumbnail – Generare Atom/RSS (http://www.ugidotnet.org/Article/Detail/280)• “Componentization”: [Render]Partial()+[Render]Action()• Test• Aree
  25. 25. Demo code: NSKProgetto open source (licenza CPL)disponibile su CodePlex:http://nsk.codeplex.com

×