Menggunakan Panel atau PlaceHolder

152

Apa perbedaan antara <asp:Panel >dan <asp:PlaceHolder >dalam ASP.NET?

Kapan sebaiknya Anda menggunakan salah satunya?

p.campbell
sumber

Jawaban:

161

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.

Steven Robbins
sumber
19
Panel menjadi DIV
mbillard
4
Itu juga bisa menjadi Span, tergantung pada versi ASP.Net dan peramban yang direndernya juga.
Steven Robbins
9
Meh, jangan mulai dengan BrowserCaps - ini juga bisa menjadi tabel sel tunggal di. Net 1.1 pada browser "Downlevel".
Zhaph - Ben Duguid
6
Heh, aku mencoba untuk memaksa meja downlevel render keluar dari pikiran saya .. terima kasih untuk membawa kembali bahwa sampai :-)
Steven Robbins
1
@Protectorone: Komentar di atas adalah tentang panel, bukan placeholder.
Brian
63

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

  • Bungkus: Mendapat / Menentukan apakah
    konten panel membungkus

Ada artikel bagus di startvbnet di sini .

Ray Booysen
sumber
15
Fitur keren lainnya untuk sebuah asp: Panel adalah ia memiliki properti DefaultButton, memberi tahu tombol mana yang harus diklik jika pengguna menekan masuk pada keyboard mereka. Berguna jika Anda memiliki beberapa panel dan tombol pada halaman yang sama yang perlu bekerja dengan tombol enter.
Alex York
1
@Marko setelah bergulat dengan warisan kendali pengguna kustom, saya setuju
drzaus
Pada tahun 2009, ketika WebForms adalah de facto .NET cara melakukan ASP.NET dev, maka ya. Pada Desember 2012, hampir 4 tahun kemudian mungkin tidak. Komentar aneh
Ray Booysen
1
tautan startvbnet sudah mati.
mmcglynn
1
Sama seperti komentar saya di atas - terima kasih telah menyediakan detail yang sangat berharga. Ini membantu menjernihkan mengapa ini digunakan dalam kode di belakang daripada solusi lain untuk modul DNN yang saya coba tingkatkan.
user1585204
36

Kontrol PlaceHolder

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.Controlskoleksi untuk menambah, menyisipkan, atau menghapus kontrol di kontrol PlaceHolder.

Kontrol panel

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 Directionproperti 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 BackImageUrproperti l untuk menampilkan gambar khusus untuk kontrol Panel. Gunakan ScrollBarsproperti 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

ecleel
sumber
1
Ini adalah penjelasan terinci yang sangat baik. Saya hanya perlu melihat mengapa tag ini digunakan di mana. pengembang untuk modul (sekarang menghilang secara misterius :)) baru saja ini secara dinamis dibuat dalam kode di belakang. Saya tidak pernah menggunakannya sebelumnya, telah menjadi pengguna front end JavaScript selama 7 tahun terakhir. Terima kasih atas masukan yang bagus.
user1585204
5

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.

George Filippakos
sumber
5
Orang masih menggunakan mode tampilan desain? ;)
Matthew Lock
2
haha - Saya menyerah menggunakannya bertahun-tahun yang lalu tetapi MS masih belum memperbaiki bug
George Filippakos
Masih menunggu ini diperbaiki!
Nikki Punjabi
1

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 DefaultButtonproperti. Ketika ID cocok dengan Tombol di Panel itu akan memicu Form Post dengan Validasi ketika enterditekan 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 enterdi dalamTextBox1

VDWWD
sumber