SlideShare una empresa de Scribd logo
1 de 27
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 Zi 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
Rute, de la Iași la București cu ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro)
Agenda Lifecycle, Rutări URL 
! Rutele determină execuția unei acțiuni  dintr-un controller!
URL Routing vs. URL Rewriting URL Rewriting mapare statică “page-centric” Ex.  /jobs/programatori -> /jobs/categoria.aspx?id=10 URL Routing maparedinamică “resource-centric” Nu efectuează rescrierea URL-ului Generează URL-uri utilizând regulile de rutare
Ciclul de execuţie
ASP.NET MVCPOSTER:
Definirea rutelor Global.asax Evenimentul Application_Start classRouteCollection : Collection<RouteBase> Instanță statică RouteTable.Routes Metoda MapRoute – o metodă extensie peste tipul RouteCollection Fiecare regulă este asociată unui obiect de tipul IRouteHandler
Definirea rutelor, sintaxă routes.MapRoute( Name, Url, [Defaults], [Constraints], [Namespaces]);
Parametrii speciali {controller}  Determină selecția controller-ului. {action}  Determină selecția metodei/acțiunii din controller care să fie invocată. Notă: Controller-ul trebuie să fie o clasă care implementează interfața IController.
Exemplu routes.MapRoute( 		// Routename           "Default",  		// URL withparameters "{controller}/{action}/{id}",  		// Parameter defaults           new { controller = "Home", action = "Index", id = "" });
Laborator 1 Deschide Visual Studio 2008 Continuă cu: File -> New Project -> ASP.NET MVC Web Application  (Visual C#/Visual Basic) F5 – Run (start debugging) Scop: înţelegerea rutei implicite din fișierul Global.asax
Restricții Definirea a doi parametrii consecutivi fără delimitatori nu este permisă. Invalid: {controller}{action}/{id} Valid: {lang}-{country}/{controller}/{action}
Contrângeri în formatul URL Permit controlul valorilor parametrilor prin definirea de expresii regulate. Ex. www.joobs.ro/blog/2009/11/21/codecamp-la-iasi Regulă rută: Routes.MapRoute(“blog”, “{an}/{luna}/{zi}/{*titlu}”,   new { controller=“Blog”, action=“Index”,    new { an=@”{4}”, luna=@”{2}”, zi=@”{2}”});  {*orice} Catch-all route.
De reținut Alegerea rutelor se face “top-down”! Prima regulă care se potrivește determină selectarea rutei, restulrutelor se ignoră. Urmărește același pattern cu tratarea excepțiilor din .NET .
Laborator 2 Vezi exercitiul: 01 - RouteDebugging.txt Scop: testare/debug rute
Laborator 3 Exercițiu:      Definiți o rută care să permită procesarea URL-urilor de forma  http://www.joobs.ro/it/locuri-de-munca/java-programmer-la-bcl-group-in-bucuresti-1666     , un controller și un view pentru afișarea detaliilor din adresa URL: titlu și id anunț. Scop: definirea de rute pentru un caz concret.
High-levelRequestRoutingPipeline Modulul UrlRoutingModule caută pentru cererea HTTP curentă o rută înregistrată în tabela RouteTable. Dacă s-a găsit, modulul de rutare extrage un obiect de tipul IRouteHandler. Peste acesta se execută metoda GetHandler care returnează un obiect de tipul IHttpHandler (metoda ProcessRequest).  In mod implicit, IRouteHandler este implementat de MvcRouteHandler și IHttpHandler este implementat prin tipul MvcHandler.  Obiectul MvcHandler este responsabil cu selecția unui controller și execuția unei acțiuni.
Generarea adreselor URL Se bazează pe același principiu folosit la selecția unei rute pentru o cerere HTTP. Fiecare regulă este testată cu un set de parametrii prin apelarea metodei Route.GetVirtualPath(RequestContext, RouteValueDictionary)
Generarea adreselor URL Metode utilitare pentru generarea URL-urilor:
Laborator 4 Vezi exercițiul: 02 - Addjobsroutes.txt Scop: definirea de rute pentru      un caz concret – JoobsBox.
ASP.NET MVC Q & A?
Rute, de la Iași la București cu ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro)
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 Rute cu ASP.NET MVC

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
 
Javascript ajax tutorial
Javascript ajax tutorialJavascript ajax tutorial
Javascript ajax tutorial
Vlad Posea
 
Google Web Toolkit - technical report
Google Web Toolkit - technical reportGoogle Web Toolkit - technical report
Google Web Toolkit - technical report
anisoarasava
 
3173119 aplicatii-de-retea
3173119 aplicatii-de-retea3173119 aplicatii-de-retea
3173119 aplicatii-de-retea
sorinm10
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingva
bringiton
 
[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
Diana Tataran
 
Programatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - ZitecProgramatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - Zitec
Agora Group
 

Similar a Rute cu ASP.NET MVC (20)

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 ...
 
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
 
Software_interior_ro.pdf
Software_interior_ro.pdfSoftware_interior_ro.pdf
Software_interior_ro.pdf
 
Node.js: aspecte esențiale
Node.js: aspecte esențialeNode.js: aspecte esențiale
Node.js: aspecte esențiale
 
Javascript ajax tutorial
Javascript ajax tutorialJavascript ajax tutorial
Javascript ajax tutorial
 
CLIW 2015-2016 (13/13) Perspective Web la nivel de client. Limbajul ES6
CLIW 2015-2016 (13/13) Perspective Web la nivel de client. Limbajul ES6CLIW 2015-2016 (13/13) Perspective Web la nivel de client. Limbajul ES6
CLIW 2015-2016 (13/13) Perspective Web la nivel de client. Limbajul ES6
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
Webappdev
WebappdevWebappdev
Webappdev
 
Google Web Toolkit - technical report
Google Web Toolkit - technical reportGoogle Web Toolkit - technical report
Google Web Toolkit - technical report
 
Asp.net mvc bad practices
Asp.net mvc   bad practicesAsp.net mvc   bad practices
Asp.net mvc bad practices
 
3173119 aplicatii-de-retea
3173119 aplicatii-de-retea3173119 aplicatii-de-retea
3173119 aplicatii-de-retea
 
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
 
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingva
 
Webpack
Webpack Webpack
Webpack
 
HTML5? HTML5!
HTML5? HTML5!HTML5? HTML5!
HTML5? HTML5!
 
[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
 
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)
 
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...
 
Programatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - ZitecProgramatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - Zitec
 
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
 

Más de Enea 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!
 

Rute cu ASP.NET MVC

  • 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 Zi 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. Rute, de la Iași la București cu ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro)
  • 5. ! Rutele determină execuția unei acțiuni dintr-un controller!
  • 6. URL Routing vs. URL Rewriting URL Rewriting mapare statică “page-centric” Ex. /jobs/programatori -> /jobs/categoria.aspx?id=10 URL Routing maparedinamică “resource-centric” Nu efectuează rescrierea URL-ului Generează URL-uri utilizând regulile de rutare
  • 9. Definirea rutelor Global.asax Evenimentul Application_Start classRouteCollection : Collection<RouteBase> Instanță statică RouteTable.Routes Metoda MapRoute – o metodă extensie peste tipul RouteCollection Fiecare regulă este asociată unui obiect de tipul IRouteHandler
  • 10. Definirea rutelor, sintaxă routes.MapRoute( Name, Url, [Defaults], [Constraints], [Namespaces]);
  • 11. Parametrii speciali {controller} Determină selecția controller-ului. {action} Determină selecția metodei/acțiunii din controller care să fie invocată. Notă: Controller-ul trebuie să fie o clasă care implementează interfața IController.
  • 12. Exemplu routes.MapRoute( // Routename "Default", // URL withparameters "{controller}/{action}/{id}", // Parameter defaults new { controller = "Home", action = "Index", id = "" });
  • 13. Laborator 1 Deschide Visual Studio 2008 Continuă cu: File -> New Project -> ASP.NET MVC Web Application (Visual C#/Visual Basic) F5 – Run (start debugging) Scop: înţelegerea rutei implicite din fișierul Global.asax
  • 14. Restricții Definirea a doi parametrii consecutivi fără delimitatori nu este permisă. Invalid: {controller}{action}/{id} Valid: {lang}-{country}/{controller}/{action}
  • 15. Contrângeri în formatul URL Permit controlul valorilor parametrilor prin definirea de expresii regulate. Ex. www.joobs.ro/blog/2009/11/21/codecamp-la-iasi Regulă rută: Routes.MapRoute(“blog”, “{an}/{luna}/{zi}/{*titlu}”, new { controller=“Blog”, action=“Index”, new { an=@”{4}”, luna=@”{2}”, zi=@”{2}”}); {*orice} Catch-all route.
  • 16. De reținut Alegerea rutelor se face “top-down”! Prima regulă care se potrivește determină selectarea rutei, restulrutelor se ignoră. Urmărește același pattern cu tratarea excepțiilor din .NET .
  • 17. Laborator 2 Vezi exercitiul: 01 - RouteDebugging.txt Scop: testare/debug rute
  • 18. Laborator 3 Exercițiu: Definiți o rută care să permită procesarea URL-urilor de forma http://www.joobs.ro/it/locuri-de-munca/java-programmer-la-bcl-group-in-bucuresti-1666 , un controller și un view pentru afișarea detaliilor din adresa URL: titlu și id anunț. Scop: definirea de rute pentru un caz concret.
  • 19. High-levelRequestRoutingPipeline Modulul UrlRoutingModule caută pentru cererea HTTP curentă o rută înregistrată în tabela RouteTable. Dacă s-a găsit, modulul de rutare extrage un obiect de tipul IRouteHandler. Peste acesta se execută metoda GetHandler care returnează un obiect de tipul IHttpHandler (metoda ProcessRequest). In mod implicit, IRouteHandler este implementat de MvcRouteHandler și IHttpHandler este implementat prin tipul MvcHandler. Obiectul MvcHandler este responsabil cu selecția unui controller și execuția unei acțiuni.
  • 20. Generarea adreselor URL Se bazează pe același principiu folosit la selecția unei rute pentru o cerere HTTP. Fiecare regulă este testată cu un set de parametrii prin apelarea metodei Route.GetVirtualPath(RequestContext, RouteValueDictionary)
  • 21. Generarea adreselor URL Metode utilitare pentru generarea URL-urilor:
  • 22. Laborator 4 Vezi exercițiul: 02 - Addjobsroutes.txt Scop: definirea de rute pentru un caz concret – JoobsBox.
  • 24. Rute, de la Iași la București cu ASP.NET MVC Gabriel Enea (developer la maxcode.ro, co-fondator al serviciului joobs.ro)
  • 25. Seminar ASP.NET MVC Mulțumesc!
  • 26. 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.
  • 27. 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