Domanda

Qual è la differenza tra <asp:Panel > e <asp:PlaceHolder > in ASP.NET?

Quando dovresti usarne uno sopra l'altro?

È stato utile?

Soluzione

Un pannello si espande in un intervallo (o div), con il suo contenuto al suo interno. Un segnaposto è proprio questo, un segnaposto che viene sostituito da qualsiasi cosa tu ci abbia inserito.

Altri suggerimenti

Il segnaposto non esegue il rendering di alcun tag per sé, quindi è ottimo per raggruppare i contenuti senza l'overhead dei tag HTML esterni.

Il Pannello ha tag HTML esterni ma ha alcune interessanti proprietà extra.

  • BackImageUrl: Ottiene / imposta l'oggetto l'URL dell'immagine di sfondo per il pannello

  • HorizontalAlign: Ottiene / imposta la
    allineamento orizzontale del genitore contenuti

  • A capo: ottiene / imposta se
    involucri di contenuto del pannello

C'è un buon articolo su startvbnet qui .

PlaceHolder control

Utilizzare il controllo PlaceHolder come contenitore per archiviare i controlli server aggiunti dinamicamente alla pagina Web. Il controllo PlaceHolder non produce alcun output visibile e viene utilizzato solo come contenitore per altri controlli nella pagina Web. Puoi utilizzare la raccolta Control.Controls per aggiungere, inserire o rimuovere un controllo nel controllo PlaceHolder.

Controllo pannello

Il controllo pannello è un contenitore per altri controlli . È particolarmente utile quando si desidera generare controlli a livello di codice, nascondere / mostrare un gruppo di controlli o localizzare un gruppo di controlli.

La proprietà Direction è utile per localizzare il contenuto di un controllo Panel per visualizzare il testo per le lingue scritte da destra a sinistra, come l'arabo o l'ebraico.

Il controllo Pannello offre diverse proprietà che ti consentono di personalizzare il comportamento e la visualizzazione dei suoi contenuti. Utilizzare la proprietà BackImageUr l per visualizzare un'immagine personalizzata per il controllo Panel. Utilizzare la proprietà ScrollBars per specificare le barre di scorrimento per il controllo.

Piccole differenze nel rendering HTML: un controllo PlaceHolder non visualizzerà nulla, ma il controllo Panel verrà visualizzato come <div>.

Ulteriori informazioni su Forum ASP.NET

I bizzarri bug * in Visual Studio 2010, se si inseriscono i controlli all'interno di un segnaposto, questi non li rendono in modalità di visualizzazione di progettazione.

Ciò è particolarmente vero per le etichette Hidenfields e Empty.

Mi piacerebbe usare i segnaposto anziché i pannelli, ma odio il fatto di non poter inserire altri controlli all'interno dei segnaposto in fase di progettazione nella GUI.

Come menzionato in altre risposte, il Pannello genera un <div> in HTML, mentre PlaceHolder no. Ma ci sono molte altre ragioni per cui puoi scegliere una delle due.

Perché un PlaceHolder?

Poiché non genera tag propri, è possibile utilizzarlo in modo sicuro all'interno di altri elementi che non possono contenere un DefaultButton, ad esempio:

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

Puoi anche utilizzare un PlaceHolder per controllare la visibilità di un gruppo di controlli senza racchiuderlo in 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>

Perché un pannello

Genera il proprio TextBox1 e può anche essere usato per avvolgere un gruppo di controlli. Ma un pannello ha molte più proprietà che possono essere utili per formattare il suo contenuto:

<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>

Ma la caratteristica più utile è la proprietà <=>. Quando l'ID corrisponde a un pulsante nel pannello, attiverà un post modulo con convalida quando <=> viene premuto all'interno di una casella di testo. Ora un utente può inviare il modulo senza premere il pulsante.

<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>

Prova lo snippet sopra premendo <=> dentro <=>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top