Pregunta

¿Cuál es la diferencia entre <asp:Panel > y <asp:PlaceHolder > en ASP.NET?

Cuándo se debe utilizar uno sobre el otro?

¿Fue útil?

Solución

Un panel se expande a un espacio (o un div), con su contenido dentro de él. Un marcador de posición es solo eso, un marcador de posición que se reemplaza por lo que haya puesto en él.

Otros consejos

El marcador de posición no representa ninguna etiqueta por sí mismo, por lo que es ideal para agrupar contenido sin la sobrecarga de las etiquetas HTML externas.

El Panel tiene etiquetas HTML externas pero tiene algunas propiedades adicionales geniales.

  • BackImageUrl: Obtiene / establece el URL de la imagen de fondo para el panel

  • HorizontalAlign: Obtiene / establece el
    alineación horizontal de los padres contenido

  • Ajuste: Obtiene / Establece si el
    el contenido del panel se ajusta

Hay un buen artículo en startvbnet aquí .

Control PlaceHolder

Use el control PlaceHolder como contenedor para almacenar controles de servidor que se agregan dinámicamente a la página web. El control PlaceHolder no produce ningún resultado visible y se usa solo como contenedor para otros controles en la página web. Puede usar la colección Control.Controls para agregar, insertar o eliminar un control en el control PlaceHolder.

Control del panel

El control del panel es un contenedor para otros controles . Es especialmente útil cuando desea generar controles mediante programación, ocultar / mostrar un grupo de controles o localizar un grupo de controles.

La propiedad Direction es útil para localizar el contenido de un control del Panel para mostrar el texto de los idiomas que se escriben de derecha a izquierda, como el árabe o el hebreo.

El control Panel proporciona varias propiedades que le permiten personalizar el comportamiento y la visualización de su contenido. Use la propiedad BackImageUr l para mostrar una imagen personalizada para el control del Panel. Use la propiedad ScrollBars para especificar barras de desplazamiento para el control.

Pequeñas diferencias al representar HTML: un control PlaceHolder no representará nada, pero el control del Panel se representará como un <div>.

Más información en Foros ASP.NET

I weird bug * en Visual Studio 2010, si coloca controles dentro de un marcador de posición, no los representa en modo de vista de diseño.

Esto es especialmente cierto para Hidenfields y etiquetas vacías.

Me encantaría usar marcadores de posición en lugar de paneles, pero odio el hecho de que no puedo poner otros controles dentro de los marcadores de posición en tiempo de diseño en la GUI.

Como se ha mencionado en otras respuestas, el Panel genera un <div> en HTML, mientras que el Marcador de posición no.Pero hay muchas más razones por las que usted podría elegir uno.

¿Por qué un Marcador de posición?

Ya que no genera la etiqueta de su propio usted puede utilizar de manera segura dentro de otro elemento que no puede contener un <div>, por ejemplo:

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

También puede utilizar un Marcador de posición para el control de la Visibilidad de un grupo de Controles sin envolviendo en un <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 qué un Panel

Genera su propia <div> y también puede ser usado para envolver un grupo de Contols.Pero un Panel tiene muchas más propiedades que pueden ser útiles para el formato del contenido:

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

Pero la característica más útil es la DefaultButton de la propiedad.Cuando el ID coincide con un Botón en el Panel activará un Formulario Post con la Validación cuando enter se pulsa en el interior de un cuadro de texto.Ahora un usuario puede enviar el Formulario sin necesidad de pulsar el Botón.

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

Pruebe el fragmento anterior pulsando enter dentro de TextBox1

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top