Seminar ASP.NET MVC<br />Gabriel Enea<br />(developer la maxcode.ro, co-fondator al serviciului joobs.ro)<br />Codecamp de...
Agenda Zilei<br />Introducere în ASP.NET MVC prin exemple<br />Rute, de la Iași la București cu ASP.NET MVC<br />Model-Vie...
Gabriel Enea<br />(developer la maxcode.ro, co-fondator al serviciului joobs.ro)<br />Model-View-Controller și ASP.NET MVC...
Agenda<br />Controller, View, Partial View, AJAX, jQuery, Validation, Templates, Areas<br />
Areas<br />Suportpentruorganizareaproiectelormari.<br />Grupează:<br />Rute<br />Controllere<br />Model<br />View-uri<br /...
IController<br />Stă la baza implementării conceptului de Controller din ASP.NET MVC<br />Definție:<br />public interface ...
Laborator 1<br />Exercițiu: Adaugare zonă “Jobs”<br />    Vezi exercițiul: 03 - AddJobsArea.txt<br />Scop: Adăugarea de Ar...
Clasa ControllerBase<br />Clasă abstractă care implementează IController<br />Suport pentru transferul datelor catreView<b...
Clasa Controller<br />Stă la baza tuturor controller-elor din ASP.NET MVC<br />Toate metodele publice dintr-o clasă care m...
ActionResult<br />Definiție:<br />public abstract classActionResult<br />{<br />	public abstract void ExecuteResult(<br />...
Implementări ActionResult<br />EmptyResult<br />ContentResult<br />JsonResult<br />RedirectResult, RedirectToRouteResult<b...
Invocarea acțiunilor<br />Rutele nu mapează nimic către acțiunile dintr-un controller.<br />Rutele populează o instanță Ro...
Invocarea acțiunilor<br />ControllerActionInvoker<br />Localizează metoda acțiune pentru apel.<br />Mapează datele din Rou...
Views<br />Responsabile cu construirea interfeței utilizator către aplicație.<br />Trimiterea datelor din Controller către...
HTML Helpers<br />clasaViewPage are o propritate Html de tipulHtmlHelper<br />HtmlHelperactionează ca un punct de conexiun...
HTML Helpers<br />Exemple: <br />Html.ActionLink, Html.RouteLink, <br />Html.BeginForm, Html.Encode, <br />Html.Hidden, Ht...
ViewEngine<br />
Laborator 2<br />Exerciții: <br />	04 - Homepage.txt05 - Job Details.txt<br />06 - List jobs by category.txt<br />Scop: Să...
AJAX<br />Site-ul tău e COOL? <br />Are funcționalități AJAX? <br />E Web 2.0?<br />Microsoft ASP.NET AJAX<br />jQuery<br />
De ce AJAX?<br />Reduce încărcarea pe server<br />Randează parțial conținut HTML<br />Experiența utilizatorului e îmbunătă...
Laborator 3<br />Exercițiu: <br />    07 – SearchJobs.txt<br />Scop: randare parțială, AJAX cu jQuery.<br />
Model Binders<br />Permite maparea automată a datelor de la tipuri simple la tipuri complexe.<br />UpdateModel&lt;T&gt; , ...
Laborator 4<br />Exercițiu: <br />Implementareaformularului de publicareanunț cu afisare anunțuri.<br /> 08 - PublishJobs....
Despre ce n-am vorbit!<br />Validation<br />Templates<br />Security (Authentication & Authorization)<br />ActionFilters<br...
ASP.NET MVC<br />Q & A?<br />
Gabriel Enea<br />(developer la maxcode.ro, co-fondator al serviciului joobs.ro)<br />Model-View-Controller și ASP.NET MVC...
Seminar ASP.NET MVC<br />Mulțumesc!<br />
Resurse ASP.NET MVC<br />codeplex.com/aspnet (Surse publice)<br />www.asp.net/mvc (Tutoriale video, Quickstarts)<br />webl...
Seminar ASP.NET MVC<br />Gabriel Enea<br />(developer la maxcode.ro, co-fondator al serviciului joobs.ro)Blog: http://gabr...
Upcoming SlideShare
Loading in...5
×

Model View Controller și ASP.NET MVC + AJAX

2,977

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
2,977
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Model View Controller și ASP.NET MVC + AJAX

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

×