Was ist der Unterschied zwischen <asp:Panel >
und <asp:PlaceHolder >
in ASP.NET?
Wann sollten Sie eine über die andere verwenden?
Was ist der Unterschied zwischen <asp:Panel >
und <asp:PlaceHolder >
in ASP.NET?
Wann sollten Sie eine über die andere verwenden?
Antworten:
Ein Panel wird zu einem Bereich (oder einem Div) erweitert, in dem sich der Inhalt befindet. Ein Platzhalter ist genau das, ein Platzhalter, der durch alles ersetzt wird, was Sie eingeben.
Der Platzhalter rendert keine Tags für sich selbst. Daher eignet er sich hervorragend zum Gruppieren von Inhalten ohne den Aufwand für äußere HTML-Tags.
Das Panel hat äußere HTML-Tags, aber einige coole zusätzliche Eigenschaften.
BackImageUrl: Ruft die URL des Hintergrundbilds für das Bedienfeld ab / legt diese fest
HorizontalAlign: Ruft die
horizontale Ausrichtung des Inhalts des übergeordneten Elements ab bzw. legt diese fest
Es gibt einen guten Artikel bei startvbnet hier .
Verwenden Sie das PlaceHolder-Steuerelement als Container, um Serversteuerelemente zu speichern, die der Webseite dynamisch hinzugefügt werden. Das PlaceHolder-Steuerelement erzeugt keine sichtbare Ausgabe und wird nur als Container für andere Steuerelemente auf der Webseite verwendet. Mit der Control.Controls
Auflistung können Sie ein Steuerelement im PlaceHolder-Steuerelement hinzufügen, einfügen oder entfernen.
Das Panel-Steuerelement ist ein Container für andere Steuerelemente . Dies ist besonders nützlich, wenn Sie Steuerelemente programmgesteuert generieren, eine Gruppe von Steuerelementen ausblenden / anzeigen oder eine Gruppe von Steuerelementen lokalisieren möchten.
Die Direction
Eigenschaft ist nützlich, um den Inhalt eines Panel-Steuerelements zu lokalisieren und Text für Sprachen anzuzeigen, die von rechts nach links geschrieben sind, z. B. Arabisch oder Hebräisch.
Das Panel-Steuerelement bietet verschiedene Eigenschaften, mit denen Sie das Verhalten und die Anzeige des Inhalts anpassen können. Verwenden Sie die BackImageUr
Eigenschaft l, um ein benutzerdefiniertes Bild für das Bedienfeld anzuzeigen. Verwenden Sie die ScrollBars
Eigenschaft, um Bildlaufleisten für das Steuerelement anzugeben.
Kleine Unterschiede beim Rendern von HTML: Ein PlaceHolder-Steuerelement rendert nichts, das Panel-Steuerelement jedoch als <div>
.
Weitere Informationen finden Sie in den ASP.NET-Foren
Ich habe einen seltsamen Fehler * in Visual Studio 2010, wenn Sie Steuerelemente in einen Platzhalter einfügen, werden diese nicht im Entwurfsansichtsmodus gerendert.
Dies gilt insbesondere für Hidenfields und Empty Labels.
Ich würde gerne Platzhalter anstelle von Bedienfeldern verwenden, aber ich hasse die Tatsache, dass ich zur Entwurfszeit in der GUI keine anderen Steuerelemente in Platzhalter einfügen kann.
Wie in anderen Antworten erwähnt, generiert das Panel eine <div>
in HTML, während der PlaceHolder dies nicht tut. Aber es gibt noch viel mehr Gründe, warum Sie sich für einen entscheiden könnten.
Warum ein PlaceHolder?
Da es kein eigenes Tag generiert, können Sie es sicher in einem anderen Element verwenden, das kein enthalten kann <div>
, zum Beispiel:
<table>
<tr>
<td>Row 1</td>
</tr>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</table>
Sie können auch einen PlaceHolder verwenden, um die Sichtbarkeit einer Gruppe von Steuerelementen zu steuern, ohne sie in a zu verpacken <div>
<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>
Warum ein Panel
Es generiert seine eigenen <div>
und kann auch zum Umschließen einer Gruppe von Steuerelementen verwendet werden. Ein Panel verfügt jedoch über viel mehr Eigenschaften, die zum Formatieren des Inhalts hilfreich sein können:
<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>
Das nützlichste Merkmal ist jedoch die DefaultButton
Eigenschaft. Wenn die ID mit enter
einer Schaltfläche im Bedienfeld übereinstimmt, wird ein Formularbeitrag mit Validierung ausgelöst, wenn in einer Textbox gedrückt wird. Jetzt kann ein Benutzer das Formular senden, ohne die Taste zu drücken.
<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>
Probieren Sie das obige Snippet aus, indem Sie nach enter
innen drückenTextBox1