Question

Quelle est la différence entre <asp:Panel > et <asp:PlaceHolder > dans ASP.NET?

Quand devriez-vous utiliser l'un sur l'autre?

Était-ce utile?

La solution

Un panneau se développe en une étendue (ou un div), avec son contenu. Un espace réservé est simplement cela, un espace réservé qui est remplacé par ce que vous y mettez.

Autres conseils

The Placeholder ne génère pas de balises pour lui-même. Il est donc idéal pour grouper du contenu sans la surcharge des balises HTML externes.

Le Panel comporte des balises HTML externes, mais possède quelques propriétés supplémentaires intéressantes.

  • BackImageUrl: Obtient / définit le URL de l'image d'arrière-plan pour le panneau

  • HorizontalAlign: Obtient / définit le fichier
    alignement horizontal du parent contenu

  • Wrap: Obtient / Définit si le
    le contenu du panneau s'enroule

Vous trouverez un bon article sur startvbnet ici .

contrôle PlaceHolder

Utilisez le contrôle PlaceHolder en tant que conteneur pour stocker les contrôles serveur ajoutés dynamiquement à la page Web. Le contrôle PlaceHolder ne produit aucune sortie visible et est utilisé uniquement en tant que conteneur d'autres contrôles de la page Web. Vous pouvez utiliser la Control.Controls collection pour ajouter, insérer ou supprimer un contrôle dans le contrôle PlaceHolder.

Contrôle du panneau

Le panneau de contrôle est un conteneur pour d'autres contrôles . Cela est particulièrement utile lorsque vous souhaitez générer des contrôles par programme, masquer / afficher un groupe de contrôles ou localiser un groupe de contrôles.

La propriété Direction est utile pour localiser le contenu d'un contrôle Panel afin d'afficher le texte des langues écrites de droite à gauche, telles que l'arabe ou l'hébreu.

Le contrôle Panel fournit plusieurs propriétés vous permettant de personnaliser le comportement et l'affichage de son contenu. Utilisez la propriété BackImageUr l pour afficher une image personnalisée pour le contrôle Panel. Utilisez la propriété ScrollBars pour spécifier les barres de défilement du contrôle.

Petites différences lors du rendu du code HTML: un contrôle PlaceHolder ne restituera rien, mais le contrôle du panneau sera rendu comme un <div>.

Plus d'informations sur Forums ASP.NET

J'ai un bogue étrange * dans Visual Studio 2010: si vous placez des contrôles dans un espace réservé, ils ne seront pas rendus en mode création.

Cela est particulièrement vrai pour les étiquettes Hidenfields et Empty.

J'aimerais utiliser des espaces réservés au lieu de panneaux, mais je déteste le fait que je ne puisse pas placer d'autres contrôles dans les espaces réservés au moment de la conception dans l'interface graphique.

Comme mentionné dans d'autres réponses, le Panel génère un <div> code HTML, contrairement à PlaceHolder. Mais il y a beaucoup plus de raisons pour lesquelles vous pouvez choisir l'un ou l'autre.

Pourquoi un PlaceHolder?

Puisqu'il ne génère aucune balise, vous pouvez l'utiliser en toute sécurité dans un autre élément ne pouvant pas contenir de DefaultButton, par exemple:

<table>
    <tr>
        <td>Row 1</td>
    </tr>
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</table>

Vous pouvez également utiliser un PlaceHolder pour contrôler la visibilité d'un groupe de contrôles sans l'envelopper dans un enter

.
<asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible="false">
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <br />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:PlaceHolder>

Pourquoi un groupe spécial

Il génère son propre TextBox1 et peut également être utilisé pour envelopper un groupe de contrôles. Mais un panneau a beaucoup plus de propriétés qui peuvent être utiles pour formater son contenu:

<asp:Panel ID="Panel1" runat="server" Font-Bold="true"
    BackColor="Green" ForeColor="Red" Width="200"
    Height="200" BorderColor="Black" BorderStyle="Dotted">
    Red text on a green background with a black dotted border.
</asp:Panel>

Mais la fonctionnalité la plus utile est la propriété <=>. Lorsque l'ID correspond à un bouton du panneau, il déclenche une publication de formulaire avec validation lorsque vous appuyez sur <=> dans une zone de texte. Désormais, un utilisateur peut soumettre le formulaire sans appuyer sur le bouton.

<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <br />
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
        ErrorMessage="Input is required" ValidationGroup="myValGroup"
        Display="Dynamic" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="myValGroup" />
</asp:Panel>

Essayez l'extrait de code ci-dessus en appuyant sur <=> à l'intérieur de <=>

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top