SlideShare una empresa de Scribd logo
1 de 29
Seminar ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro) Codecamp de toamnă la Iași // Codecamp.ro 19-21 nov 2009
Agenda Zilei Introducere în ASP.NET MVC prin exemple Rute, de la Iași la București cu ASP.NET MVC Model-View-Controller și ASP.NET MVC. AJAX e minunat în combinație cu ASP.NET MVC Magia testelor automate cu ASP.NET MVC
Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro) Model-View-Controller și ASP.NET MVC. AJAX e minunatîncombinație cu ASP.NET MVC
Agenda Controller, View, Partial View, AJAX, jQuery, Validation, Templates, Areas
Areas Suportpentruorganizareaproiectelormari. Grupează: Rute Controllere Model View-uri Resurse statice (.css, .js, .jpg, …)
IController Stă la baza implementării conceptului de Controller din ASP.NET MVC Definție: public interface IController { 	void Execute(RequestContextrequestContext); } Similar cu interfața IHttpHandler IHttpHandler.ProcessRequest(HttpContext context).
Laborator 1 Exercițiu: Adaugare zonă “Jobs”     Vezi exercițiul: 03 - AddJobsArea.txt Scop: Adăugarea de Areas & Controllers.
Clasa ControllerBase Clasă abstractă care implementează IController Suport pentru transferul datelor catreView TempData ViewData obiectul ControllerContext, context specific MVC pentru cereri similar cu obiectul HttpContext pentru ASP.NET
Clasa Controller Stă la baza tuturor controller-elor din ASP.NET MVC Toate metodele publice dintr-o clasă care moștenesc clasa Controller devin metode acțiuni. Implementează abilitatea de a converti acțiunile în apeluri de metode.
ActionResult Definiție: public abstract classActionResult { 	public abstract void ExecuteResult( ControllerContext context); } Implementează “Command Pattern”. Încapsulează rezultatul invocării unei acțiuni dintr-un controller.
Implementări ActionResult EmptyResult ContentResult JsonResult RedirectResult, RedirectToRouteResult ViewResult, PartialViewResult FileResult, FilePathResult, FileContentResult, FileStreamResult JavaScriptResult
Invocarea acțiunilor Rutele nu mapează nimic către acțiunile dintr-un controller. Rutele populează o instanță RouteData pe care o trimit Controller-ului. clasa Controller este responsabilă cu invocarea acțiunilor, mai direct clasa ControllerActionInvoker.
Invocarea acțiunilor ControllerActionInvoker Localizează metoda acțiune pentru apel. Mapează datele din RouteData și datele cererii HTTP (Request.Form, Request.QueryString) după nume către parametrii acțiunii. Invocă acțiunile și filtrele sale. Apelează metoda ExecuteRequest pentru obiectul ActionResult returnat de metoda acțiune.
Views Responsabile cu construirea interfeței utilizator către aplicație. Trimiterea datelor din Controller către View se face prin proprietatea ViewData (typeof(ViewDataDictionary)). classWebFormViewEngine .. – reprezintă motorul de View-uri implicit în ASP.NET MVC Moștenesc clasa ViewPage sau ViewPage<T>.
HTML Helpers clasaViewPage are o propritate Html de tipulHtmlHelper HtmlHelperactionează ca un punct de conexiune către metodele extensii.
HTML Helpers Exemple:  Html.ActionLink, Html.RouteLink,  Html.BeginForm, Html.Encode,  Html.Hidden, Html.DropDownList,  Html.ListBox, …,  Html.TextBox, Html.RenderPartial,  Html.ValidationMessage, Html.ValidationSummary Html.RenderAction (apărut în ASP.NET MVC 2)
ViewEngine
Laborator 2 Exerciții:  	04 - Homepage.txt05 - Job Details.txt 06 - List jobs by category.txt Scop: Să vedem cum o acțiune determină selecția unui view, cum se afișează datele în view, cum se trimite modelul de date la view.
AJAX Site-ul tău e COOL?  Are funcționalități AJAX?  E Web 2.0? Microsoft ASP.NET AJAX jQuery
De ce AJAX? Reduce încărcarea pe server Randează parțial conținut HTML Experiența utilizatorului e îmbunătățită Este asincron! Dar, există și motive contrare AJAX…
Laborator 3 Exercițiu:      07 – SearchJobs.txt Scop: randare parțială, AJAX cu jQuery.
Model Binders Permite maparea automată a datelor de la tipuri simple la tipuri complexe. UpdateModel<T> , extensiepentrumapare date. Exemplu: [AcceptVerbs(HttpVerbs.Post)] publicActionResult Edit(Job job) {// … }
Laborator 4 Exercițiu:  Implementareaformularului de publicareanunț cu afisare anunțuri.  08 - PublishJobs.txt Scop: întelegerea conceptului de View -  colectare date.
Despre ce n-am vorbit! Validation Templates Security (Authentication & Authorization) ActionFilters HandlingExceptions P.s. mă întreb dacă va fi timp, dacă nu, vă rămâne temă pentru acasă 
ASP.NET MVC Q & A?
Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro) Model-View-Controller și ASP.NET MVC. AJAX e minunatîncombinație cu ASP.NET MVC
Seminar ASP.NET MVC Mulțumesc!
Resurse ASP.NET MVC codeplex.com/aspnet (Surse publice) www.asp.net/mvc (Tutoriale video, Quickstarts) weblogs.asp.net/scottgu/archive/tags/MVC/ (Articole, noutati ASP.NET MVC + exempleutilizare, byScottGu) Directorul /Docs pus la dispoziție în cadrul training-ului. Book: Professional ASP.NET MVC 1.0(Rob Conery, Scott Hanselman, PhilHaack, ScottGuthrie) ASP.NET MVC Training Kit (http://tinyurl.com/yh7muf) Notă: acestemateriale au stat la bazainformaţiilor din sesiunile seminarului ASP.NET MVC.
Seminar ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro)Blog: http://gabrielenea.blogspot.com Microblog: http://www.twitter.com/dotnet18 Email: gabriel.enea@joobs.ro Codecamp de toamnă la Iași // Codecamp.ro 19-21 nov 2009

Más contenido relacionado

Similar a Model View Controller și ASP.NET MVC + AJAX

Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Webdanielnastase
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Codecamp Romania
 
Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)
Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)
Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)Sabin Buraga
 
Java enterprise real world
Java enterprise real worldJava enterprise real world
Java enterprise real worlddpmihai
 
Google Web Toolkit - technical report
Google Web Toolkit - technical reportGoogle Web Toolkit - technical report
Google Web Toolkit - technical reportanisoarasava
 
Node.js: aspecte esențiale
Node.js: aspecte esențialeNode.js: aspecte esențiale
Node.js: aspecte esențialeSabin Buraga
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiSabin Buraga
 
Aplicații Firefox OS cu HTML5
Aplicații Firefox OS cu HTML5Aplicații Firefox OS cu HTML5
Aplicații Firefox OS cu HTML5Sabin Buraga
 
OSOM - Performance in testing by jmeter
OSOM - Performance in testing by jmeterOSOM - Performance in testing by jmeter
OSOM - Performance in testing by jmeterMarcela Oniga
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingvabringiton
 
WADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.jsWADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.jsSabin Buraga
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2Diana Tataran
 
Google Web Toolkit - tutorial
Google Web Toolkit - tutorialGoogle Web Toolkit - tutorial
Google Web Toolkit - tutorialanisoarasava
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxCostea112
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...Sabin Buraga
 

Similar a Model View Controller și ASP.NET MVC + AJAX (20)

FlexDoc
FlexDocFlexDoc
FlexDoc
 
Dezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor WebDezvoltarea Aplicatiilor Web
Dezvoltarea Aplicatiilor Web
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
 
Webappdev
WebappdevWebappdev
Webappdev
 
Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)
Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)
Web 2016 (12/13) Interacțiune Web cu Ajax. Aplicații Web hibride (mash-up-uri)
 
Java enterprise real world
Java enterprise real worldJava enterprise real world
Java enterprise real world
 
HTML5? HTML5!
HTML5? HTML5!HTML5? HTML5!
HTML5? HTML5!
 
Google Web Toolkit - technical report
Google Web Toolkit - technical reportGoogle Web Toolkit - technical report
Google Web Toolkit - technical report
 
Node.js: aspecte esențiale
Node.js: aspecte esențialeNode.js: aspecte esențiale
Node.js: aspecte esențiale
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatii
 
Aplicații Firefox OS cu HTML5
Aplicații Firefox OS cu HTML5Aplicații Firefox OS cu HTML5
Aplicații Firefox OS cu HTML5
 
OSOM - Performance in testing by jmeter
OSOM - Performance in testing by jmeterOSOM - Performance in testing by jmeter
OSOM - Performance in testing by jmeter
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingva
 
WADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.jsWADe 2014—2015 (supliment): Dezvoltare Web via node.js
WADe 2014—2015 (supliment): Dezvoltare Web via node.js
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
 
Google Web Toolkit - tutorial
Google Web Toolkit - tutorialGoogle Web Toolkit - tutorial
Google Web Toolkit - tutorial
 
Biblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptxBiblioteci JavaScript pentru Ajax.pptx
Biblioteci JavaScript pentru Ajax.pptx
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
 
Wpf Workgroup 2
Wpf Workgroup 2Wpf Workgroup 2
Wpf Workgroup 2
 

Más de Enea Gabriel

Moving forward with ASP.NET Core
Moving forward with ASP.NET CoreMoving forward with ASP.NET Core
Moving forward with ASP.NET CoreEnea Gabriel
 
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014Enea Gabriel
 
Improving the availability of your website
Improving the availability of your websiteImproving the availability of your website
Improving the availability of your websiteEnea Gabriel
 
Applying EF Code First at Your Job
Applying EF Code First at Your JobApplying EF Code First at Your Job
Applying EF Code First at Your JobEnea Gabriel
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Enea Gabriel
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstEnea Gabriel
 

Más de Enea Gabriel (7)

Moving forward with ASP.NET Core
Moving forward with ASP.NET CoreMoving forward with ASP.NET Core
Moving forward with ASP.NET Core
 
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
The future of ASP.NET / CodeCamp/Iasi 25 Oct 2014
 
Improving the availability of your website
Improving the availability of your websiteImproving the availability of your website
Improving the availability of your website
 
Applying EF Code First at Your Job
Applying EF Code First at Your JobApplying EF Code First at Your Job
Applying EF Code First at Your Job
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
Elements of DDD with ASP.NET MVC & Entity Framework Code First v2
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
FII absolvent!
FII absolvent!FII absolvent!
FII absolvent!
 

Model View Controller și ASP.NET MVC + AJAX

  • 1. Seminar ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro) Codecamp de toamnă la Iași // Codecamp.ro 19-21 nov 2009
  • 2. Agenda Zilei Introducere în ASP.NET MVC prin exemple Rute, de la Iași la București cu ASP.NET MVC Model-View-Controller și ASP.NET MVC. AJAX e minunat în combinație cu ASP.NET MVC Magia testelor automate cu ASP.NET MVC
  • 3. Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro) Model-View-Controller și ASP.NET MVC. AJAX e minunatîncombinație cu ASP.NET MVC
  • 4. Agenda Controller, View, Partial View, AJAX, jQuery, Validation, Templates, Areas
  • 5. Areas Suportpentruorganizareaproiectelormari. Grupează: Rute Controllere Model View-uri Resurse statice (.css, .js, .jpg, …)
  • 6. IController Stă la baza implementării conceptului de Controller din ASP.NET MVC Definție: public interface IController { void Execute(RequestContextrequestContext); } Similar cu interfața IHttpHandler IHttpHandler.ProcessRequest(HttpContext context).
  • 7. Laborator 1 Exercițiu: Adaugare zonă “Jobs” Vezi exercițiul: 03 - AddJobsArea.txt Scop: Adăugarea de Areas & Controllers.
  • 8. Clasa ControllerBase Clasă abstractă care implementează IController Suport pentru transferul datelor catreView TempData ViewData obiectul ControllerContext, context specific MVC pentru cereri similar cu obiectul HttpContext pentru ASP.NET
  • 9. Clasa Controller Stă la baza tuturor controller-elor din ASP.NET MVC Toate metodele publice dintr-o clasă care moștenesc clasa Controller devin metode acțiuni. Implementează abilitatea de a converti acțiunile în apeluri de metode.
  • 10. ActionResult Definiție: public abstract classActionResult { public abstract void ExecuteResult( ControllerContext context); } Implementează “Command Pattern”. Încapsulează rezultatul invocării unei acțiuni dintr-un controller.
  • 11. Implementări ActionResult EmptyResult ContentResult JsonResult RedirectResult, RedirectToRouteResult ViewResult, PartialViewResult FileResult, FilePathResult, FileContentResult, FileStreamResult JavaScriptResult
  • 12. Invocarea acțiunilor Rutele nu mapează nimic către acțiunile dintr-un controller. Rutele populează o instanță RouteData pe care o trimit Controller-ului. clasa Controller este responsabilă cu invocarea acțiunilor, mai direct clasa ControllerActionInvoker.
  • 13. Invocarea acțiunilor ControllerActionInvoker Localizează metoda acțiune pentru apel. Mapează datele din RouteData și datele cererii HTTP (Request.Form, Request.QueryString) după nume către parametrii acțiunii. Invocă acțiunile și filtrele sale. Apelează metoda ExecuteRequest pentru obiectul ActionResult returnat de metoda acțiune.
  • 14. Views Responsabile cu construirea interfeței utilizator către aplicație. Trimiterea datelor din Controller către View se face prin proprietatea ViewData (typeof(ViewDataDictionary)). classWebFormViewEngine .. – reprezintă motorul de View-uri implicit în ASP.NET MVC Moștenesc clasa ViewPage sau ViewPage<T>.
  • 15. HTML Helpers clasaViewPage are o propritate Html de tipulHtmlHelper HtmlHelperactionează ca un punct de conexiune către metodele extensii.
  • 16. HTML Helpers Exemple: Html.ActionLink, Html.RouteLink, Html.BeginForm, Html.Encode, Html.Hidden, Html.DropDownList, Html.ListBox, …, Html.TextBox, Html.RenderPartial, Html.ValidationMessage, Html.ValidationSummary Html.RenderAction (apărut în ASP.NET MVC 2)
  • 18. Laborator 2 Exerciții: 04 - Homepage.txt05 - Job Details.txt 06 - List jobs by category.txt Scop: Să vedem cum o acțiune determină selecția unui view, cum se afișează datele în view, cum se trimite modelul de date la view.
  • 19. AJAX Site-ul tău e COOL? Are funcționalități AJAX? E Web 2.0? Microsoft ASP.NET AJAX jQuery
  • 20. De ce AJAX? Reduce încărcarea pe server Randează parțial conținut HTML Experiența utilizatorului e îmbunătățită Este asincron! Dar, există și motive contrare AJAX…
  • 21. Laborator 3 Exercițiu: 07 – SearchJobs.txt Scop: randare parțială, AJAX cu jQuery.
  • 22. Model Binders Permite maparea automată a datelor de la tipuri simple la tipuri complexe. UpdateModel<T> , extensiepentrumapare date. Exemplu: [AcceptVerbs(HttpVerbs.Post)] publicActionResult Edit(Job job) {// … }
  • 23. Laborator 4 Exercițiu: Implementareaformularului de publicareanunț cu afisare anunțuri. 08 - PublishJobs.txt Scop: întelegerea conceptului de View - colectare date.
  • 24. Despre ce n-am vorbit! Validation Templates Security (Authentication & Authorization) ActionFilters HandlingExceptions P.s. mă întreb dacă va fi timp, dacă nu, vă rămâne temă pentru acasă 
  • 26. Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro) Model-View-Controller și ASP.NET MVC. AJAX e minunatîncombinație cu ASP.NET MVC
  • 27. Seminar ASP.NET MVC Mulțumesc!
  • 28. Resurse ASP.NET MVC codeplex.com/aspnet (Surse publice) www.asp.net/mvc (Tutoriale video, Quickstarts) weblogs.asp.net/scottgu/archive/tags/MVC/ (Articole, noutati ASP.NET MVC + exempleutilizare, byScottGu) Directorul /Docs pus la dispoziție în cadrul training-ului. Book: Professional ASP.NET MVC 1.0(Rob Conery, Scott Hanselman, PhilHaack, ScottGuthrie) ASP.NET MVC Training Kit (http://tinyurl.com/yh7muf) Notă: acestemateriale au stat la bazainformaţiilor din sesiunile seminarului ASP.NET MVC.
  • 29. Seminar ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro)Blog: http://gabrielenea.blogspot.com Microblog: http://www.twitter.com/dotnet18 Email: gabriel.enea@joobs.ro Codecamp de toamnă la Iași // Codecamp.ro 19-21 nov 2009