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)
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
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 .
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)
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