Publicité
Publicité

Contenu connexe

Publicité
Publicité

Web dev open door

  1. MVC & nouveautés ASP.NET
  2. Où en sommes-nous ? Framework .NET (4.5) ASP.NET Présentation WebForms Dynamic MVC 4 Ajax Web Pages 2 4.5 ? Data
  3. Une intro rapide à ASP.Net MVC En WebFoms, la page est le point de départ de votre applicaton En MVC, le code est le point de départ de votre application Quel code ? On reprend les principes REST : L’URL représente ce qu’on veut faire Par exemple /Clients/Affiche/Dupont .. Démo ?
  4. Du neuf à tous les étages Dans ASP.NET Core Dans ASP.NET WebForms Dans ASP.NET MVC …
  5. ASP.NET CORE
  6. Minification et bundles <script src=“Scripts/js"></script> Packaging des scripts <link href="styles/css" rel="stylesheet" /> Packaging des css Ordre : alphabétique + bon sens (js connus placés en tête, ainsi que reset.css et normalize.css)
  7. Validation des requêtes La validation des requêtes change dans ASP.Net 4.5 <httpRuntime requestValidationMode="4.5" ... /> Les champs ne sont validés qu’à la première utilisation var s = context.Request.Unvalidated.Form["forum_post"]; Et on peut choisir de ne pas les valider.
  8. jQuery, on continue ! Source : trends.builtwith.com
  9. ASP.NET WebForms
  10. Eval et Bind <ul> <asp:Repeater runat="server" ID="clients"> <ItemTemplate> <li> Nom: <%# Eval("Nom") %><br /> Prenom: <%# Eval("Prenom") %><br /> </li> </ItemTemplate> </asp:Repeater> </ul> <asp:FormView runat="server" ID="editClient"> <EditItemTemplate> <div> <asp:Label runat="server" AssociatedControlID="prenom">Prenom :</asp:Label> <asp:TextBox ID="prenom" runat="server" Text='<%# Bind("Prenom") %>' /> </div> <div> <asp:Label runat="server" AssociatedControlID="nom">Nom :</asp:Label> <asp:TextBox ID="nom" runat="server" Text='<%# Bind("Nom") %>' /> </div> <asp:Button runat="server" CommandName="Update" /> </EditItemTemplate> </asp:FormView>
  11. Item et BindItem <asp:FormView runat="server" ID="editClient" ModelType="ASPNETvNextTest.Model.Client"> <EditItemTemplate> <div> <asp:Label runat="server" AssociatedControlID="prenom">Prenom :</asp:Label> <asp:TextBox ID="prenom" runat="server" Text='<%# BindItem.Prenom %>' /> </div> <div> <asp:Label runat="server" AssociatedControlID="nom">Nom :</asp:Label> <asp:TextBox ID="nom" runat="server" Text='<%# BindItem.Nom %>' /> </div> <asp:Button runat="server" CommandName="Update" /> </EditItemTemplate> </asp:FormView>
  12. Typage des contrôles de binding <asp:GridView ID="categoriesGrid" runat="server" ModelType="WebApplication1.Model.Category" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="CategoryID" HeaderText="ID" /> <asp:BoundField DataField="CategoryName" HeaderText="Name" /> <asp:BoundField DataField="Description" HeaderText="Description" /> <asp:TemplateField HeaderText="# of Products"> <ItemTemplate> <%# Item.Products.Count %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
  13. Datasource : selectMethod <asp:GridView ID="categoriesGrid" runat="server" ModelType="WebApplication1.Model.Category" SelectMethod="GetCategories" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="CategoryID" HeaderText="ID" /> <asp:BoundField DataField="CategoryName" HeaderText="Name" /> <asp:BoundField DataField="Description" HeaderText="Description" /> <asp:TemplateField HeaderText="# of Products"> <ItemTemplate> <%# Item.Products.Count %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> public IQueryable<Category> GetCategories() { var db = new Northwind(); return db.Categories.Include(c => c.Products); }
  14. Passage de paramètres public IQueryable<Product> GetProducts([QueryString]string keyword) { IQueryable<Product> query = _db.Products; if (!String.IsNullOrWhiteSpace(keyword)) { query = query.Where(p => p.ProductName.Contains(keyword)); } return query; }
  15. En vrac… Encodage <asp:TemplateField HeaderText="Name"> <ItemTemplate><% #:Item.Products.Name %></ItemTemplate> </asp:TemplateField> Unobtrusive Javascript <add name="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" /> AntiXSS <httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4….
  16. Extensions
  17. WCF Web API [ServiceContract] public class ContactsApi { [WebGet(UriTemplate = "")] public IQueryable<Contact> Get() { var contacts = new List<Contact>() { new Contact {ContactId = 1, Name = "Phil Haack"}, new Contact {ContactId = 2, Name = "HongMei Ge"}, new Contact {ContactId = 3, Name = "Glenn Block"}, new Contact {ContactId = 4, Name = "Howard Dierking"}, new Contact {ContactId = 5, Name = "Jeff Handley"}, new Contact {ContactId = 6, Name = "Yavor Georgiev"} }; return contacts.AsQueryable(); } } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.Add(new ServiceRoute("api/contacts", new HttpServiceHostFactory(), typeof(ContactsApi)));
  18. WCF Web API IQueryable permet de passer des requêtes LINQ L’API renvoie au choix XML ou JSON (entête http Accept:) Un client de test est disponible var config = new HttpConfiguration() { EnableTestClient = true }; routes.Add(new ServiceRoute("api/contacts", new HttpServiceHostFactory() { Configuration = config}, typeof(ContactsApi)));
  19. NuGet
  20. Entity Framework « Code First »
  21. Allons un peu plus loin ?
  22. Scaffolders MVC
  23. ASP.NET MVC 4
  24. Arrivée des rendus mobiles Trois grandes façons de procéder CSS media queries Vues spécialisées Projets dédiés
  25. « adaptive rendering » E.g., on s’appuie sur les CSS Media Queries Pour Optimisé pour le type de navigateur Pas de duplication Contre On ne peut pas vraiment spécialiser la version mobile vs. Desktop Utilisation excessive de la bande passante
  26. Rendu côté serveur E.g. les vues sont différentes en fonction du client Pour Flexibilité maximale Efficacité en bande passante Contre On peut avoir de la répétition La détection fine des devices n’est pas triviale
  27. Next steps ?
  28. En conclusion Microsoft a réussi à décorréler les évolutions d’ASP.Net et de VS Proprement et par projet, grâce à NuGet MVC prend du galon Nettement plus productif tous les ans Doté d’un arsenal pour le dev mobile Epaulé par NuGet / EF / Scaffolders / etc Il y a sur Internet 30 fois plus de WebForms que de MVC Les proportions sont meilleures en entreprise L’investissement de Microsoft dans WebForms est important Adaptation de toutes les nouveautés intéressantes Alors, MVC ou WebForms ? Il est temps de prendre des compétences MVC, même si le cœur de votre activité reste WebForms
  29. MERCI !

Notes de l'éditeur

  1. http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/
Publicité