Les nouveautes d'ASP.NET 4.0
Date de publication : 07 October 2009
Par
Philippe Vialatte (philippe.developpez.com)
I. Introduction
II. Modification des modèles de projet
III. Amélioration de la granularité du ViewState
III. Support natif du routage
IV. Gestion personnalisee du ClientId
V. Ameliorations des controles standards
V-A. Ameliorations du controle ListView
V-B. Ameliorations des controles CheckBoxList et RadioButtonList
V-C. Ameliorations du controle Menu
V-D. Controles Wizard et CreateUserWizard
VI. Autres ameliorations
VI-A. Integration des controles ASP.NET Chart controls
VI-B. Gestion des balises Meta
VI-C. Effectuer un filtre grace au controle QueryExtender
VI-D. Encodage HTML automatique du code en ligne
VI-E. Conserver la selection d'une ligne dans une GridView
I. Introduction
Avec la sortie de la version 4.0 du framework imminente, cet article va se concentrer sur les nouveautes
specifiques aux nouveautes concernant la partie Webform Asp.Net.
La version 4.0 n'apporte pas de nouveautes aussi importantes que Linq, les generiques ou WCF, mais
comporte de nombreuses ameliorations
II. Modification des modèles de projet
Depuis la version 2.0 du framework, et l'apparition du modèle "Application Web", les modèles de sites Asp.Net étaient restés au nombre de deux.
D'un coté, les sites Web
III. Amélioration de la granularité du ViewState
Avant de décrire l'évolution en question, on va reparler brièvement du ViewState. Le ViewState est un mécanisme dont le but est de
stocker l'état de chaque (ou presque) propriété des contrôles de la page, de façon à pouvoir restaurer l'état des contrôles
sans avoir à les re-charger explicitement. Cette déclaration simplifie un peu le ViewState (qui possède d'autre finesses), mais
elle est suffisante pour le contexte actuel.
Le gros défaut de ce mécanisme est que, TOUTES les propriétés d'une page étant stockées et sérialisées, il arrive régulièrement que le ViewState
prenne un pourcentage important de la page, alla parfois jusqu'à 50% du code HTML rendu coté client, ce qui peut pénaliser les performances,
surtout pour des données volumineuses.
Il est néanmoins possible de désactiver le viewstate, en affectant la valeur false à la propriété EnableViewState d'un contrôle,
de la page entière ou du Web.Config.
Désactivation au niveau d'un contrôle |
< asp : Label ID = " monLabel " runat = " server " Text = " Mon Label " EnableViewState = " false " / >
|
Désactivation au niveau d'une pagee |
< % @ Page enableViewState = " False " % >
|
Désactivation au niveau du Web.Config |
< configuration >
< system . web >
< pages EnableViewState = " true " / >
< / system . web >
< / configuration >
|
Le problème, dans les version précédentes d'ASP.NET, était qu'une fois que le ViewState était désactivé
au niveau de la page, il ne pouvait plus être ré-activé au niveau dees contrôles de la page.
Si il était activé, il pouvait être désactivé séléctivement.
Au final, régler le ViewState revenait à désactiver le ViewState sur chaque
contrôle que l'on ne voulait pas stocker dedans, un à un.
La version 4 d'ASP.NET à vu l'apparition d'une nouvelle propriété, nommée ViewStateMode, et présente sur tous les contrôles serveurs.
Cette propriété indique si le ViewState est actif pour le contrôle, inactif, ou si il hérite du parent.
Il est désormais possible, avec cette propriété, de désactiver le ViewStateMode au niveau du parent, avec EnableViewState, et de l'activer séléctivement pour chaque contrôle.
Par exemple, le code suivant, en ASP.NET 4 :
< % @ Page Language = " C# " AutoEventWireup = " true " EnableViewState = " false " % >
<! doctype html public " -//w3c//dtd xhtml 1.0 transitional//en " " http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
< title > < / title >
< / head >
< body >
< form id = " form1 " runat = " server " >
< div >
< asp : Label ID = " monLabel1 " runat = " server " Text = " Mon Label 1 " ViewStateMode = " Enabled " / >
< asp : Label ID = " monLabel2 " runat = " server " Text = " Mon Label 2 " / >
< asp : Label ID = " monLabel3 " runat = " server " Text = " Mon Label 3 " / >
< asp : Label ID = " monLabel4 " runat = " server " Text = " Mon Label 4 " / >
< asp : Label ID = " monLabel5 " runat = " server " Text = " Mon Label 5 " / >
< asp : Label ID = " monLabel6 " runat = " server " Text = " Mon Label 6 " / >
< asp : Label ID = " monLabel7 " runat = " server " Text = " Mon Label 7 " / >
< asp : Label ID = " monLabel8 " runat = " server " Text = " Mon Label 8 " / >
< asp : Label ID = " monLabel9 " runat = " server " Text = " Mon Label 9 " / >
< asp : Label ID = " monLabel10 " runat = " server " Text = " Mon Label 10 " / >
< / div >
< / form >
< / body >
< / html >
|
Produira sensiblement le même ViewState que le code suivant :
< % @ Page Language = " C# " AutoEventWireup = " true " EnableViewState = " true " % >
<! doctype html public " -//w3c//dtd xhtml 1.0 transitional//en " " http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
< title > < / title >
< / head >
< body >
< form id = " form1 " runat = " server " >
< div >
< asp : Label ID = " monLabel1 " runat = " server " Text = " Mon Label 1 " / >
< asp : Label ID = " monLabel2 " runat = " server " Text = " Mon Label 2 " EnableViewState = " false " / >
< asp : Label ID = " monLabel3 " runat = " server " Text = " Mon Label 3 " EnableViewState = " false " / >
< asp : Label ID = " monLabel4 " runat = " server " Text = " Mon Label 4 " EnableViewState = " false " / >
< asp : Label ID = " monLabel5 " runat = " server " Text = " Mon Label 5 " EnableViewState = " false " / >
< asp : Label ID = " monLabel6 " runat = " server " Text = " Mon Label 6 " EnableViewState = " false " / >
< asp : Label ID = " monLabel7 " runat = " server " Text = " Mon Label 7 " EnableViewState = " false " / >
< asp : Label ID = " monLabel8 " runat = " server " Text = " Mon Label 8 " EnableViewState = " false " / >
< asp : Label ID = " monLabel9 " runat = " server " Text = " Mon Label 9 " EnableViewState = " false " / >
< asp : Label ID = " monLabel10 " runat = " server " Text = " Mon Label 10 " EnableViewState = " false " / >
< / div >
< / form >
< / body >
< / html >
|
III. Support natif du routage
IV. Gestion personnalisee du ClientId
V. Ameliorations des controles standards
V-A. Ameliorations du controle ListView
V-B. Ameliorations des controles CheckBoxList et RadioButtonList
V-C. Ameliorations du controle Menu
V-D. Controles Wizard et CreateUserWizard
VI. Autres ameliorations
VI-A. Integration des controles ASP.NET Chart controls
VI-B. Gestion des balises Meta
VI-C. Effectuer un filtre grace au controle QueryExtender
VI-D. Encodage HTML automatique du code en ligne
VI-E. Conserver la selection d'une ligne dans une GridView
Copyright © 2009 Philippe Vialatte.
Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de
son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 €
de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.