Apa perbedaan antara <asp:Panel >
dan <asp:PlaceHolder >
dalam ASP.NET?
Kapan sebaiknya Anda menggunakan salah satunya?
Apa perbedaan antara <asp:Panel >
dan <asp:PlaceHolder >
dalam ASP.NET?
Kapan sebaiknya Anda menggunakan salah satunya?
Jawaban:
Panel memperluas ke rentang (atau div), dengan konten di dalamnya. Tempat penampung hanya itu, tempat penampung yang digantikan oleh apa pun yang Anda masukkan ke dalamnya.
Placeholder tidak memberikan tag apa pun untuk dirinya sendiri, sehingga sangat bagus untuk mengelompokkan konten tanpa overhead tag HTML luar.
Panel memang memiliki tag HTML luar tetapi memiliki beberapa sifat tambahan keren.
BackImageUrl: Mendapat / Mengatur URL gambar latar belakang untuk panel
HorizontalAlign: Mendapat / Mengatur
perataan horizontal dari konten induk
Ada artikel bagus di startvbnet di sini .
Gunakan kontrol PlaceHolder sebagai wadah untuk menyimpan kontrol server yang ditambahkan secara dinamis ke halaman Web. Kontrol PlaceHolder tidak menghasilkan output yang terlihat dan hanya digunakan sebagai wadah untuk kontrol lain di halaman Web. Anda bisa menggunakan Control.Controls
koleksi untuk menambah, menyisipkan, atau menghapus kontrol di kontrol PlaceHolder.
The Panel kontrol adalah wadah untuk kontrol lainnya . Ini sangat berguna ketika Anda ingin membuat kontrol secara terprogram, menyembunyikan / menampilkan sekelompok kontrol, atau melokalkan sekelompok kontrol.
The Direction
properti berguna untuk melokalisasi konten Panel kontrol untuk menampilkan teks untuk bahasa yang ditulis dari kanan ke kiri, seperti Arab atau Ibrani.
Kontrol Panel menyediakan beberapa properti yang memungkinkan Anda untuk menyesuaikan perilaku dan menampilkan kontennya. Gunakan BackImageUr
properti l untuk menampilkan gambar khusus untuk kontrol Panel. Gunakan ScrollBars
properti untuk menentukan bilah gulir untuk kontrol.
Perbedaan kecil saat merender HTML: kontrol PlaceHolder tidak akan menghasilkan apa pun, tetapi kontrol Panel akan merender sebagai a <div>
.
Informasi lebih lanjut di Forum ASP.NET
Saya bug * aneh di visual studio 2010, jika Anda menempatkan kontrol di dalam Placeholder tidak membuat mereka dalam mode tampilan desain.
Ini terutama berlaku untuk label Hidenfield dan Kosong.
Saya akan senang menggunakan placeholder alih-alih panel tapi saya benci kenyataan saya tidak bisa menempatkan kontrol lain di dalam placeholder pada waktu desain di GUI.
Seperti disebutkan dalam jawaban lain, Panel menghasilkan <div>
dalam HTML, sedangkan PlaceHolder tidak. Tetapi ada lebih banyak alasan mengapa Anda bisa memilih salah satu.
Mengapa PlaceHolder?
Karena tidak menghasilkan tag sendiri, Anda dapat menggunakannya dengan aman di dalam elemen lain yang tidak dapat berisi <div>
, misalnya:
<table>
<tr>
<td>Row 1</td>
</tr>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</table>
Anda juga dapat menggunakan PlaceHolder untuk mengontrol Visibilitas sekelompok Kontrol tanpa membungkusnya dengan a <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>
Mengapa sebuah Panel
Ini menghasilkan sendiri <div>
dan juga dapat digunakan untuk membungkus sekelompok Contols. Tetapi Panel memiliki lebih banyak properti yang dapat berguna untuk memformat kontennya:
<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>
Tetapi fitur yang paling berguna adalah DefaultButton
properti. Ketika ID cocok dengan Tombol di Panel itu akan memicu Form Post dengan Validasi ketika enter
ditekan di dalam TextBox. Sekarang pengguna dapat mengirimkan Formulir tanpa menekan tombol.
<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>
Coba cuplikan di atas dengan menekan enter
di dalamTextBox1