ASP:PLACEHOLDER |
ASP : Place un possesseur |
|---|---|
| ASP.NET | Framework .NET 2+ |
Syntaxe
|
<asp:PlaceHolder paramètres> </asp:PlaceHolder> |
Paramètres
| Paramètre | Description | ||
|---|---|---|---|
| EnableTheming=valeur | Ce paramètre permet d'indiquer si le thème de la balise doit être affiché ou non : | ||
| Constante | Description | ||
| "False" | Cette constante permet d'indiquer que le thème de la balise n'est pas affiché. | ||
| "True" | Cette constante permet d'indiquer que le thème de la balise est affiché. | ||
| EnableViewState=valeur | Ce paramètre permet d'indiquer si le ViewState de la balise doit être activé ou non : | ||
| Constante | Description | ||
| "False" | Cette constante permet d'indiquer que le ViewState de la balise n'est pas actif. | ||
| "True" | Cette constante permet d'indiquer que le ViewState de la balise est actif. | ||
| ID=valeur | Ce paramètre permet d'indiquer l'identificateur de la balise. | ||
| OnDataBinding=valeur | Ce paramètre permet d'indiquer le gestionnaire d'événement de DataBinding. | ||
| OnDisposed=valeur | Ce paramètre permet d'indiquer le gestionnaire d'événement de disposition. | ||
| OnInit=valeur | Ce paramètre permet d'indiquer le gestionnaire d'événement d'initialisation. | ||
| OnLoad=valeur | Ce paramètre permet d'indiquer le gestionnaire d'événement de chargement. | ||
| OnPreRender=valeur | Ce paramètre permet d'indiquer le gestionnaire d'événement de pré-rendu. | ||
| OnUnload=valeur | Ce paramètre permet d'indiquer le gestionnaire d'événement de déchargement. | ||
| runat=valeur | Ce paramètre permet d'indiquer où doit être exécuté la balise : | ||
| Constante | Description | ||
| "server" | Cette constante permet d'indiquer qu'il faut exécuter la balise du côté serveur. | ||
| SkinID=valeur | Ce paramètre permet d'indiquer l'identificateur de Skin. | ||
| Visible=valeur | Ce paramètre permet d'indiquer si la balise doit être affiché ou non : | ||
| Constante | Description | ||
| "False" | Cette constante permet d'indiquer que la balise n'est pas affiché. | ||
| "True" | Cette constante permet d'indiquer que la balise est affiché. | ||
Description
Cette balise permet de réserver un espace pour ajouter un contrôle par le code.
Remarques
- Le contrôle <asp:PlaceHolder> est un conteneur invisible utilisé pour injecter dynamiquement d'autres contrôles à l'exécution. Il ne génère aucun balisage HTML à lui seul, ce qui le rend totalement neutre visuellement.
- Contrairement à un <asp:Panel>, le PlaceHolder n'apparaît pas du tout dans le HTML généré tant qu'il ne contient rien. Il est donc idéal pour réserver une place pour du contenu dynamique.
- Ce contrôle est souvent utilisé pour ajouter des contrôles serveur à la volée, via le code-behind, avec la méthode Controls.Add(), ce qui le rend extrêmement utile dans les interfaces adaptatives.
- La structure du PlaceHolder est minimaliste. Il ne possède pas de style, ni de fonctionnalités visuelles. Son seul but est de permettre le rendu conditionnel ou dynamique de contenu.
- Dans un scénario où plusieurs éléments doivent être affichés en fonction de conditions (utilisateur connecté, type de profil,...), un PlaceHolder peut servir de point d'insertion flexible et contrôlé.
- Un PlaceHolder n'a pas de balise HTML propre, ce qui signifie qu'il n'ajoute pas de surcharge inutile dans le DOM de la page. C'est un avantage pour optimiser la légèreté du rendu HTML.
- Il peut contenir n'importe quel type de contrôle ASP.NET, que ce soit un simple Label, une GridView ou même d'autres conteneurs comme des Panel, ce qui le rend très polyvalent.
- Lorsque Visible="False", non seulement le PlaceHolder ne s'affiche pas, mais les contrôles qu'il contient ne sont pas non plus rendus ni exécutés, ce qui évite toute surcharge serveur inutile.
- Le PlaceHolder est souvent utilisé conjointement avec des boucles ou des structures conditionnelles dans le code-behind, permettant de construire dynamiquement des interfaces complexes.
- Il est parfaitement compatible avec le mécanisme de ViewState d'ASP.NET, mais attention : les contrôles ajoutés dynamiquement doivent l'être à chaque postback pour maintenir leur état.
- L'utilisation du PlaceHolder facilite aussi la modularité du code ASP.NET : il permet d'isoler des blocs réutilisables et de les injecter là où c'est nécessaire, selon des règles métier.
- Dans des interfaces de type formulaire ou tableau de bord, on peut utiliser plusieurs PlaceHolder pour afficher dynamiquement des blocs d'informations spécifiques à chaque utilisateur.
- Il est également utile pour charger des UserControls dynamiquement. Cela permet de composer une page à partir de fragments modulaires, insérés selon les besoins métier.
- Comme il n'a pas d'effet de style par défaut, toute personnalisation visuelle doit passer par les contrôles enfants, ou alors être encapsulée dans un Panel placé dans le PlaceHolder.
- Le contrôle peut aussi être utilisé dans des composants de layout comme les MasterPage ou WebParts, servant alors de point d'injection pour des contenus définis dans d'autres fichiers ASPX.
Exemple
Voici un exemple permettant d'afficher 2 étiquettes à partir du code serveur :
- <%@ Page Language="vb" %>
- <script runat="server">
-
- Sub Page_Load(sender As Object, e As EventArgs)
- Dim monEtiquette1 As New Label
- monEtiquette1.Text = "Mon étiquette 1"
- MonPlaceHolder.Controls.Add(monEtiquette1)
-
- Dim monEtiquette2 As New Label
- monEtiquette2.Text = "Mon étiquette 2"
- MonPlaceHolder.Controls.Add(monEtiquette2)
- End Sub
-
- </script>
-
- <!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:PlaceHolder id="MonPlaceHolder" runat="server"></asp:PlaceHolder>
- </div>
- </form>
- </body>
- </html>
on obtiendra le résultat semblable suivant :
| Mon étiquette 1Mon étiquette 2 |
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Samedi, le 31 août 2017