Pergunta

O que é a diferença entre <asp:Panel > e <asp:PlaceHolder > em ASP.NET?

Quando você deve usar um sobre o outro?

Foi útil?

Solução

Um painel se expande para um período (ou um div), com conteúdos que de dentro dele. Um espaço reservado é apenas isso, um espaço reservado que é substituído por tudo o que você colocar nele.

Outras dicas

O espaço reservado não processar quaisquer tags para si mesmo, por isso é ótimo para agrupar conteúdos sem a sobrecarga de tags HTML exteriores.

O Painel tem tags HTML exteriores, mas tem algumas propriedades extras interessantes.

  • BackImageUrl: Obtém / Define o URL da imagem de plano de fundo para o painel

  • HorizontalAlign: Obtém / Define o
    alinhamento horizontal dos parent conteúdos

  • Wrap: Obtém Sets / se o
    envoltórios de conteúdo do painel

Há um bom artigo em startvbnet aqui .

PlaceHolder controlar

Use o controle de espaço reservado como um recipiente para controles de servidor store que são adicionados dinamicamente para a página da Web. O controle de espaço reservado não produz nenhuma saída visível e é usado apenas como um recipiente para outros controles na página Web. Você pode usar a coleção Control.Controls para adicionar, inserir ou remover um controle no controle do espaço reservado.

controle Panel

O Painel de controle é um contêiner para outros controles . É especialmente útil quando você deseja gerar controles programaticamente, ocultar / mostrar um grupo de controles, ou localizar um grupo de controles.

A propriedade Direction é útil para localizar o conteúdo de um controle Panel para texto de exibição para idiomas que são escritos da direita para a esquerda, como árabe ou hebraico.

O controle Panel fornece várias propriedades que permitem que você personalize o comportamento e exibição de seu conteúdo. Use a propriedade BackImageUrl para exibir uma imagem personalizada para o controle Panel. Use a propriedade ScrollBars para especificar barras de rolagem para o controle.

diferenças

Pequenos quando renderização de HTML:. um controle PlaceHolder irá processar nada, mas o controle Panel tornará como um <div>

Mais informações em ASP.NET Fóruns

Eu estranho bug * no visual studio 2010, se você colocar controles dentro de um espaço reservado que não torná-los em modo de exibição de design.

Isto é especialmente verdadeiro para Hidenfields e etiquetas vazias.

Eu adoraria usar espaços reservados em vez de painéis, mas eu odeio o fato de eu não posso colocar outros controles dentro de espaços reservados em tempo de design na GUI.

Como mencionado em outras respostas, o Painel gera um <div> em HTML, enquanto o espaço reservado não. Mas há muito mais razões pelas quais você pode escolher qualquer um deles.

Por que um espaço reservado?

Uma vez que não gera tag de seu próprio você pode usá-lo com segurança dentro outro elemento que não pode conter um <div>, por exemplo:

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

Você também pode usar um espaço reservado para controlar a visibilidade de um grupo de controles sem colocá-lo em um <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>

Por que um Painel

Ele gera a sua própria <div> e também pode ser usado para envolver um grupo de Contols. Mas um painel tem muito mais propriedades que podem ser úteis para formatá-lo de conteúdo:

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

Mas a característica mais útil é a propriedade DefaultButton. Quando a ID corresponde a um botão no painel que irá desencadear um Post formulário com validação quando enter é pressionado dentro de uma caixa de texto. Agora, um usuário pode enviar o formulário sem pressionar o botão.

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

Tente o trecho acima, pressionando enter dentro TextBox1

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top