Developpez.com - Microsoft DotNET
X

Choisissez d'abord la catégorieensuite la rubrique :


Les nouveautes d'ASP.NET 4.0

Date de publication : 07 October 2009

Par Philippe Vialatte (philippe.developpez.com)
 


               Version PDF (Miroir)   Version hors-ligne (Miroir)

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



               Version PDF (Miroir)   Version hors-ligne (Miroir)

Valid XHTML 1.0 TransitionalValid CSS!

Copyright © 2009 Philippe Vialatte. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -