Title: ASP 'NET 2'0 : Cration de contrles serveurs
1ASP .NET 2.0 Création de contrôles serveurs
Présenté par Pierre Lagarde pierlag_at_microsoft.com
Relation Développeurs Microsoft France
Level 300
2Deux visions de lapproche composant
- Lapproche Contrôle Utilisateur (UserControl)
- Créer une pagelet réutilisable (.ascx) dans le
designer graphique - ? Facile à développer
- ? Pas multi-projet
- Lapproche Contrôle Server (CustomControl)
- Créer un composant .NET Web réutilisable depuis
la toolbox - Modèle compilé dans une dll
- ? Multi-projet
- ? Pas facile à développer
3Lapproche Contrôle Server
- Identifié par un tag dans le flux aspx
- ltaspbutton gt
- Les contrôles serveurs peuvent
- Générer un flux HTML vers le client dans la
méthode Render - writer.RenderBeginTag(HtmlTextWriterTag.Span)
- Générer du script client (cas des contrôles
Validators) - RegisterClientScriptBlock
- Adapter leur rendu aux différents clients
- Mobile / IE / Firefox
4La nouvelle Architecture des Contrôles
Control (1.x)
WebControl (1.x)
BaseDataList (1.x)
BaseDataBoundControl
DataBoundControl
HierarchicalDataBoundControl
TreeView
ListControl
CompositeDataBoundControl
BulletedList
DetailsView
Menu
CheckBoxList
FormView
DropDownList
GridView
ListBox
RadioButtonList
52 Mon premier contrôle serveur
demo
ltspan style"font-sizeXX-Large / Small"gt Test
Phrase lt/spangt
6Sauvegarde des propriétés
- Le contrôle serveur est créé à chaque génération
de page il faut donc implémenter un mécanisme de
sauvegarde des données - Utilisation du ViewState
public bool LargeText get object o
ViewState"LargeText" if (o
null) return _largeText else return
(bool)o set _largeText
value ViewState"LargeText"
_largeText
7Visibilité des propriétés dans linspecteur
dobjet
- Utilisation des attributs sur les propriétés
Bindable(true), Category("Appearance"),
DefaultValue("true") public bool LargeText
EditorBrowsable(EditorBrowsableState.Never),
DefaultValue(false) public override bool
Visible
83 Modifier mon premier contrôle
demo
9Contrôle invisible
- Réaliser un contrôle visible par Visual Studio
mais invisible dans la page HTML - Utilisation des ControlDesigner
DesignerAttribute(typeof(InvisibleControlControlD
esigner)) public class InvisibleControl
Control public class InvisibleControlContro
lDesigner ControlDesigner public override
string GetDesignTimeHtml() return
base.CreatePlaceHolderDesignTimeHtml()
104 Contrôle Invisible
demo
11Ajout de fonctionnalités à un contrôle existant
- Créer un DropDownList multicolore
lthtmlgt ltbodygt ltselectgt ltoption
style"colorredfont-weight700font-familycouri
er new"gtOnelt/optiongt ltoptiongtTwolt/optiongt
ltoptiongtThreelt/optiongt lt/selectgt
lt/bodygt lt/htmlgt
12Hériter du DropDownList
- Ajout de propriétés
- Réécrire le RenderContents
13Customiser le SmartTag pour la nouvelle
DropDownList
- Créer un nouveau ControlDesign
public override DesignerActionListCollection
ActionLists //Return DesignerActionListCollecti
on()
145 MyDropDownList MyDropDownListControlDesign
demo
15(No Transcript)