Uso del Panel o Marcador de posición


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

¿Cuándo se debe usar uno sobre el otro?

Author: p.campbell, 2009-01-27

5 answers

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

 155
Author: Steven Robbins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-27 13:15:36

El marcador de posición no genera 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 interesantes.

  • BackImageUrl: Obtiene / Establece el url de la imagen de fondo para el panel

  • HorizontalAlign: Obtiene / Establece la
    alineación horizontal de la matriz índice

  • Wrap: Obtiene / Establece si el
    contenido del panel wraps

Hay un buen artículo en startvbnet aquí.

 61
Author: Ray Booysen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-27 13:17:21

Control de marcador de posición

Utilice el control marcador de posición como contenedor para almacenar los controles del servidor que se agregan dinámicamente a la página Web. El control marcador de posición no produce ninguna salida visible y se utiliza 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 marcador de posición.

Panel de control

El Panel de control 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 Panel de control para mostrar texto para los idiomas que se escriben de derecha a izquierda, como el árabe o el hebreo.

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

Pequeñas diferencias al renderizar HTML: un control de marcador de posición no renderizará nada, pero el control de panel se renderizará como un <div>.

Más información en ASP.NET Foros

 35
Author: ecleel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-04 16:12:29

I weird bug* en visual studio 2010, si coloca controles dentro de un marcador de posición, no los renderiza en el modo 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 el momento del diseño en la interfaz gráfica de usuario.

 5
Author: George Filippakos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-13 15:21:54

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

¿Por qué un marcador de posición?

Dado que no genera ninguna etiqueta propia, puede usarla de forma segura dentro de otro elemento que no pueda contener un <div>, por ejemplo:

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

También puede usar un marcador de posición para controlar la Visibilidad de un grupo de controles sin envolverlo 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 propio <div> y también se puede usar para envolver un grupo de Contols. Pero un panel tiene muchas más propiedades que pueden ser útiles para formatear su 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 propiedad DefaultButton. Cuando el ID coincide con un Botón en el Panel, se activará un Mensaje de Formulario con Validación cuando se presione enter dentro de un cuadro de texto. Ahora un usuario puede enviar el Formulario sin presionar 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 presionando enter dentro de TextBox1

 0
Author: VDWWD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-19 18:52:43