Panel veya PlaceHolder'ı kullanma


152

ASP.NET'te <asp:Panel >ve <asp:PlaceHolder >ASP.NET arasındaki fark nedir ?

Birini diğeri ne zaman kullanmalısınız?

Yanıtlar:


161

Panel, içinde içerik bulunan bir yayılma alanına (veya div) genişler. Yer tutucu tam da budur, yerine koyduğunuz her şeyin yerini alan bir yer tutucudur.


19
Bir panel DIV olur
mbillard

4
ASP.Net'in sürümüne ve oluşturduğu tarayıcıya bağlı olarak bir Span da olabilir.
Steven Robbins

9
Meh, beni BrowserCaps ile kullanmaya başlama - aynı zamanda .Net 1.1'de "Downlevel" tarayıcılarda tek bir hücre tablosu haline gelebilir.
Zhaph - Ben Duguid

6
Heh, alt seviyedeki tablo oluşturmayı aklımdan zorlamaya çalıştım .. Bunu geri getirdiğin için teşekkürler :-)
Steven Robbins

1
@Protectorone: Yukarıdaki yorumlar yer tutucular değil panellerle ilgilidir.
Brian

63

Yer Tutucu kendisi için herhangi bir etiket oluşturmaz, bu nedenle dış HTML etiketlerinin ek yükü olmadan içeriği gruplandırmak için mükemmeldir.

Panel dış HTML etiketlerine sahiptir, ancak bazı harika ekstra özelliklere sahiptir.

  • BackImageUrl: Panel için arka plan resminin URL'sini alır / ayarlar

  • HorizontalAlign:
    Üst içeriğin yatay hizalamasını alır / ayarlar

  • Sar:
    Panelin içeriğinin sarılıp sarılmayacağını belirler / ayarlar

Burada startvbnet'te iyi bir makale var .


15
Bir asp: Panel'in bir başka harika özelliği de, DefaultButton özelliğine sahip olması ve kullanıcının klavyesinde enter tuşuna basması durumunda hangi düğmeyi tıklayacağını söylemesi. Aynı sayfada enter düğmesiyle çalışması gereken birden fazla panel ve düğme varsa kullanışlıdır.
Alex York

1
@Marko, özel kullanıcı kontrolü mirası ile güreştikten sonra katılıyorum
drzaus

2009 yılında, WebForms ASP.NET dev yapmanın fiili .NET yolu olduğunda, o zaman evet. Aralık 2012'de, neredeyse 4 yıl sonra muhtemelen değil. Garip yorum
Ray Booysen

1
startvbnet bağlantısı öldü.
mmcglynn

1
Yukarıdaki yorumlarımla aynı - çok değerli detaylar sağladığınız için teşekkürler. Neden bu yükseltmek için çalışıyorum bir DNN modülü için diğer çözümler yerine arkasında kod kullanıldığını temizlemek için yardımcı oldu.
user1585204

36

PlaceHolder kontrolü

Web sayfasına dinamik olarak eklenen sunucu denetimlerini depolamak için PlaceHolder denetimini kapsayıcı olarak kullanın. PlaceHolder denetimi görünür bir çıktı oluşturmaz ve yalnızca Web sayfasındaki diğer denetimler için bir kap olarak kullanılır. Sen kullanabilirsiniz Control.Controlseklemek eklemek veya yer tutucu kontrolünde bir denetimi kaldırmak için koleksiyon.

Panel kontrolü

Panel kontrolü diğer denetimler için bir kapsayıcıdır . Kontrolleri programlı olarak oluşturmak, bir kontrol grubunu gizlemek / göstermek veya bir kontrol grubunu yerelleştirmek istediğinizde özellikle yararlıdır.

Bu Directionözellik, bir Panel denetiminin içeriğini sağdan sola yazılan diller için Arapça veya İbranice gibi metin görüntülemek üzere yerelleştirmek için kullanışlıdır.

Panel kontrolü, içeriğinin davranışını ve görüntüsünü özelleştirmenizi sağlayan çeşitli özellikler sunar. BackImageUrPanel denetimi için özel bir görüntü görüntülemek için l özelliğini kullanın . ScrollBarsDenetim için kaydırma çubuklarını belirtmek için özelliği kullanın .

HTML oluştururken küçük farklılıklar: Bir PlaceHolder denetimi hiçbir şey oluşturmaz, ancak Panel denetimi bir olarak oluşturulur <div>.

ASP.NET Forumları hakkında daha fazla bilgi


1
Bu mükemmel ve ayrıntılı bir açıklamadır. Sadece bu etiketlerin neden kullanıldığını görmem gerekiyordu. bir modülün geliştiricisi (şimdi gizemli bir şekilde ortadan kayboldu :)) sadece arkadaki kodda dinamik olarak oluşturuldu. Onları daha önce hiç kullanmadım, son 7 yıldır JavaScript ön uç adamı oldum. Mükemmel giriş için teşekkürler.
user1585204

5

Visual Studio 2010'da garip bir hata * var, kontrolleri bir Yer Tutucunun içine koyarsanız, bunları tasarım görünümü modunda oluşturmaz.

Bu özellikle Hidenfields ve Empty etiketleri için geçerlidir.

Paneller yerine yer tutucuları kullanmak isterdim, ancak GUI'deki tasarım zamanında yer tutucuların içine başka kontroller koyamayacağımdan nefret ediyorum.


5
İnsanlar hala tasarım görüntüleme modunu kullanıyor mu? ;)
Matthew Lock

2
haha - Yıllar önce kullanmayı bıraktım ama MS hala hatayı düzeltmedi
George Filippakos

Hala bunun düzeltilmesini bekliyor!
Nikki Punjabi

1

Diğer yanıtlarda belirtildiği gibi, Panel <div>HTML'de a oluşturur , ancak PlaceHolder bunu yapmaz. Ancak ikisini de seçebilmenizin çok daha fazla nedeni var.

Neden bir PlaceHolder?

Kendine ait bir etiket oluşturmadığından, etiketi a içermeyen diğer öğelerin içinde güvenle kullanabilirsiniz <div>, örneğin:

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

Ayrıca, bir Kontrol grubunun Görünürlüğünü bir <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>

Neden Panel

Kendi üretiyor <div>ve bir grup Contols'u sarmak için de kullanılabilir. Ancak bir Panel, içeriğini biçimlendirmek için yararlı olabilecek çok daha fazla özelliğe sahiptir:

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

Ancak en kullanışlı özellik DefaultButtonmülkiyettir. Kimlik, Paneldeki bir Düğme ile eşleştiğinde enter, bir TextBox içinde basıldığında Onaylı bir Form Postasını tetikler . Artık bir kullanıcı, Düğmeye basmadan Formu gönderebilir.

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

enterİçeriye basarak yukarıdaki kod parçasını deneyinTextBox1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.