際際滷

際際滷Share a Scribd company logo
Seminar ASP.NET MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)Codecamp de toamn la Iai // Codecamp.ro19-21 nov 2009
Agenda ZiIntroducere 樽n ASP.NET MVC prin exempleRute, de la Iai la Bucureti cu ASP.NET MVCModel-View-Controller i ASP.NET MVC. AJAX e minunat 樽n combinaie cu ASP.NET MVCMagia testelor automate cu ASP.NET MVC
Rute, de la Iai la Bucureti cu ASP.NET MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)
AgendaLifecycle, Rutri URL
!Rutele determin execuia unei aciuni dintr-un controller!
URL Routing vs. URL RewritingURL Rewritingmapare staticpage-centricEx. /jobs/programatori -> /jobs/categoria.aspx?id=10URL Routingmaparedinamicresource-centricNu efectueaz rescrierea URL-uluiGenereaz URL-uri utiliz但nd regulile de rutare
Ciclul de execu釘ie
ASP.NET MVCPOSTER:
Definirea rutelorGlobal.asaxEvenimentul Application_StartclassRouteCollection : Collection<RouteBase>Instan static RouteTable.RoutesMetoda MapRoute  o metod extensie peste tipul RouteCollectionFiecare regul este asociat unui obiect de tipul IRouteHandler
Definirea rutelor, sintaxroutes.MapRoute(Name, Url, [Defaults], [Constraints], [Namespaces]);
Parametrii speciali{controller} Determin selecia controller-ului.{action} Determin selecia metodei/aciunii din controller care s fie invocat.Not: Controller-ul trebuie s fie o clas care implementeaz interfaa IController.
Exempluroutes.MapRoute(		// Routename          "Default", 		// URL withparameters"{controller}/{action}/{id}", 		// Parameter defaults          new { controller = "Home", action = "Index", id = "" });
Laborator 1Deschide Visual Studio 2008Continu cu:File -> New Project -> ASP.NET MVC Web Application  (Visual C#/Visual Basic)F5  Run (start debugging)Scop: 樽n釘elegerea rutei implicite din fiierul Global.asax
RestriciiDefinirea a doi parametrii consecutivi fr delimitatori nu este permis.Invalid: {controller}{action}/{id}Valid: {lang}-{country}/{controller}/{action}
Contr但ngeri 樽n formatul URLPermit controlul valorilor parametrilor prin definirea de expresii regulate.Ex. www.joobs.ro/blog/2009/11/21/codecamp-la-iasiRegul rut:Routes.MapRoute(blog, {an}/{luna}/{zi}/{*titlu},  new { controller=Blog, action=Index,   new { an=@\d{4}, luna=@\d{2}, zi=@\d{2}}); {*orice}Catch-all route.
De reinutAlegerea rutelor se face top-down!Prima regul care se potrivete determin selectarea rutei, restulrutelor se ignor.Urmrete acelai pattern cu tratarea excepiilor din .NET .
Laborator 2Vezi exercitiul: 01 - RouteDebugging.txtScop: testare/debug rute
Laborator 3Exerciiu:     Definii 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 afiarea detaliilor din adresa URL: titlu i id anun.Scop: definirea de rute pentru un caz concret.
High-levelRequestRoutingPipelineModulul UrlRoutingModule caut pentru cererea HTTP curent o rut 樽nregistrat 樽n tabela RouteTable.Dac s-a gsit, 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 selecia unui controller i execuia unei aciuni.
Generarea adreselor URLSe bazeaz pe acelai principiu folosit la selecia unei rute pentru o cerere HTTP.Fiecare regul este testat cu un set de parametrii prin apelarea metodei Route.GetVirtualPath(RequestContext, RouteValueDictionary)
Generarea adreselor URLMetode utilitare pentru generarea URL-urilor:
Laborator 4Vezi exerciiul: 02 - Addjobsroutes.txtScop: definirea de rute pentru     un caz concret  JoobsBox.
ASP.NET MVCQ & A?
Rute, de la Iai la Bucureti cu ASP.NET MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)
Seminar ASP.NET MVCMulumesc!
Resurse ASP.NET MVCcodeplex.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 dispoziie 樽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 MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)Blog: http://gabrielenea.blogspot.comMicroblog: http://www.twitter.com/dotnet18Email: gabriel.enea@joobs.roCodecamp de toamn la Iai // Codecamp.ro19-21 nov 2009

More Related Content

Similar to 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 ...
Codecamp Romania
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
Software_interior_ro.pdf
Software_interior_ro.pdfSoftware_interior_ro.pdf
Software_interior_ro.pdf
SamanatiSorin
Node.js: aspecte eseniale
Node.js: aspecte esenialeNode.js: aspecte eseniale
Node.js: aspecte eseniale
Sabin Buraga
Javascript ajax tutorial
Javascript ajax tutorialJavascript ajax tutorial
Javascript ajax tutorial
Vlad Posea
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
Sabin Buraga
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
Sabin Buraga
Google Web Toolkit - technical report
Google Web Toolkit - technical reportGoogle Web Toolkit - technical report
Google Web Toolkit - technical report
anisoarasava
Asp.net mvc bad practices
Asp.net mvc   bad practicesAsp.net mvc   bad practices
Asp.net mvc bad practices
Radu Vunvulea
3173119 aplicatii-de-retea
3173119 aplicatii-de-retea3173119 aplicatii-de-retea
3173119 aplicatii-de-retea
sorinm10
CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5
CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5
CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5
Sabin Buraga
Cautaera multilingva
Cautaera multilingvaCautaera multilingva
Cautaera multilingva
bringiton
Webpack
Webpack Webpack
Webpack
Dmitrii Stoian
HTML5? HTML5!
HTML5? HTML5!HTML5? HTML5!
HTML5? HTML5!
Sabin 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 2
Diana Tataran
Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)
Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)
Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)
Sabin Buraga
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
Programatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - ZitecProgramatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - Zitec
Agora Group
WADe 20142015 (supliment): Dezvoltare Web via node.js
WADe 20142015 (supliment): Dezvoltare Web via node.jsWADe 20142015 (supliment): Dezvoltare Web via node.js
WADe 20142015 (supliment): Dezvoltare Web via node.js
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 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
Software_interior_ro.pdf
Software_interior_ro.pdfSoftware_interior_ro.pdf
Software_interior_ro.pdf
SamanatiSorin
Node.js: aspecte eseniale
Node.js: aspecte esenialeNode.js: aspecte eseniale
Node.js: aspecte eseniale
Sabin Buraga
Javascript ajax tutorial
Javascript ajax tutorialJavascript ajax tutorial
Javascript ajax tutorial
Vlad Posea
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
Sabin Buraga
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
Sabin Buraga
Google Web Toolkit - technical report
Google Web Toolkit - technical reportGoogle Web Toolkit - technical report
Google Web Toolkit - technical report
anisoarasava
Asp.net mvc bad practices
Asp.net mvc   bad practicesAsp.net mvc   bad practices
Asp.net mvc bad practices
Radu Vunvulea
3173119 aplicatii-de-retea
3173119 aplicatii-de-retea3173119 aplicatii-de-retea
3173119 aplicatii-de-retea
sorinm10
CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5
CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5
CLIW 20142015 (11/12): Programare Web. API-uri JavaScript 樽n contextul HTML5
Sabin Buraga
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
Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)
Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)
Web 2016 (12/13) Interaciune Web cu Ajax. Aplicaii Web hibride (mash-up-uri)
Sabin Buraga
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
Programatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - ZitecProgramatica Enterprise 2011 - Zitec
Programatica Enterprise 2011 - Zitec
Agora Group
WADe 20142015 (supliment): Dezvoltare Web via node.js
WADe 20142015 (supliment): Dezvoltare Web via node.jsWADe 20142015 (supliment): Dezvoltare Web via node.js
WADe 20142015 (supliment): Dezvoltare Web via node.js
Sabin Buraga

More from 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
Enea 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 2014
Enea Gabriel
Improving the availability of your website
Improving the availability of your websiteImproving the availability of your website
Improving the availability of your website
Enea 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 Job
Enea 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 v2
Enea 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 First
Enea Gabriel
FII absolvent!
FII absolvent!FII absolvent!
FII absolvent!
Enea Gabriel
Moving forward with ASP.NET Core
Moving forward with ASP.NET CoreMoving forward with ASP.NET Core
Moving forward with ASP.NET Core
Enea 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 2014
Enea Gabriel
Improving the availability of your website
Improving the availability of your websiteImproving the availability of your website
Improving the availability of your website
Enea 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 Job
Enea 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 v2
Enea 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 First
Enea Gabriel

Rute cu ASP.NET MVC

  • 1. Seminar ASP.NET MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)Codecamp de toamn la Iai // Codecamp.ro19-21 nov 2009
  • 2. Agenda ZiIntroducere 樽n ASP.NET MVC prin exempleRute, de la Iai la Bucureti cu ASP.NET MVCModel-View-Controller i ASP.NET MVC. AJAX e minunat 樽n combinaie cu ASP.NET MVCMagia testelor automate cu ASP.NET MVC
  • 3. Rute, de la Iai la Bucureti cu ASP.NET MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)
  • 5. !Rutele determin execuia unei aciuni dintr-un controller!
  • 6. URL Routing vs. URL RewritingURL Rewritingmapare staticpage-centricEx. /jobs/programatori -> /jobs/categoria.aspx?id=10URL Routingmaparedinamicresource-centricNu efectueaz rescrierea URL-uluiGenereaz URL-uri utiliz但nd regulile de rutare
  • 9. Definirea rutelorGlobal.asaxEvenimentul Application_StartclassRouteCollection : Collection<RouteBase>Instan static RouteTable.RoutesMetoda MapRoute o metod extensie peste tipul RouteCollectionFiecare regul este asociat unui obiect de tipul IRouteHandler
  • 10. Definirea rutelor, sintaxroutes.MapRoute(Name, Url, [Defaults], [Constraints], [Namespaces]);
  • 11. Parametrii speciali{controller} Determin selecia controller-ului.{action} Determin selecia metodei/aciunii din controller care s fie invocat.Not: Controller-ul trebuie s fie o clas care implementeaz interfaa IController.
  • 12. Exempluroutes.MapRoute( // Routename "Default", // URL withparameters"{controller}/{action}/{id}", // Parameter defaults new { controller = "Home", action = "Index", id = "" });
  • 13. Laborator 1Deschide Visual Studio 2008Continu cu:File -> New Project -> ASP.NET MVC Web Application (Visual C#/Visual Basic)F5 Run (start debugging)Scop: 樽n釘elegerea rutei implicite din fiierul Global.asax
  • 14. RestriciiDefinirea a doi parametrii consecutivi fr delimitatori nu este permis.Invalid: {controller}{action}/{id}Valid: {lang}-{country}/{controller}/{action}
  • 15. Contr但ngeri 樽n formatul URLPermit controlul valorilor parametrilor prin definirea de expresii regulate.Ex. www.joobs.ro/blog/2009/11/21/codecamp-la-iasiRegul rut:Routes.MapRoute(blog, {an}/{luna}/{zi}/{*titlu}, new { controller=Blog, action=Index, new { an=@\d{4}, luna=@\d{2}, zi=@\d{2}}); {*orice}Catch-all route.
  • 16. De reinutAlegerea rutelor se face top-down!Prima regul care se potrivete determin selectarea rutei, restulrutelor se ignor.Urmrete acelai pattern cu tratarea excepiilor din .NET .
  • 17. Laborator 2Vezi exercitiul: 01 - RouteDebugging.txtScop: testare/debug rute
  • 18. Laborator 3Exerciiu: Definii 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 afiarea detaliilor din adresa URL: titlu i id anun.Scop: definirea de rute pentru un caz concret.
  • 19. High-levelRequestRoutingPipelineModulul UrlRoutingModule caut pentru cererea HTTP curent o rut 樽nregistrat 樽n tabela RouteTable.Dac s-a gsit, 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 selecia unui controller i execuia unei aciuni.
  • 20. Generarea adreselor URLSe bazeaz pe acelai principiu folosit la selecia 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 URLMetode utilitare pentru generarea URL-urilor:
  • 22. Laborator 4Vezi exerciiul: 02 - Addjobsroutes.txtScop: definirea de rute pentru un caz concret JoobsBox.
  • 24. Rute, de la Iai la Bucureti cu ASP.NET MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)
  • 26. Resurse ASP.NET MVCcodeplex.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 dispoziie 樽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 MVCGabriel Enea(developer la maxcode.ro, co-fondator al serviciului joobs.ro)Blog: http://gabrielenea.blogspot.comMicroblog: http://www.twitter.com/dotnet18Email: gabriel.enea@joobs.roCodecamp de toamn la Iai // Codecamp.ro19-21 nov 2009