Вопрос

В чем разница между <asp:Panel > и <asp:PlaceHolder > в АСП.НЕТ?

Когда следует использовать один вместо другого?

Это было полезно?

Решение

Панель расширяется до диапазона (или элемента div) со своим содержимым внутри него.Заполнитель — это просто заполнитель, который заменяется тем, что вы в него поместите.

Другие советы

Placeholder не отображает никаких тегов сам по себе, поэтому он отлично подходит для группировки контента без дополнительных затрат на внешние HTML-теги.

Панель имеет внешние HTML-теги, но имеет несколько интересных дополнительных свойств.

  • URL-адрес обратного изображения:Получает/устанавливает URL фонового изображения для панели

  • Горизонтальное выравнивание:Получает/устанавливает
    горизонтальное выравнивание содержимого родителя

  • Сворачивать:Получает/устанавливает, указывает ли
    перенос содержимого панели

На startvbnet есть хорошая статья здесь.

Элемент управления PlaceHolder

Используйте элемент управления PlaceHolder в качестве контейнера для хранения серверных элементов управления, которые динамически добавляются на веб-страницу.Элемент управления PlaceHolder не создает видимых выходных данных и используется только как контейнер для других элементов управления на веб-странице.Вы можете использовать Control.Controls Коллекция для добавления, вставки или удаления элемента управления в элементе управления PlaceHolder.

Панель управления

А Панель управления — это контейнер для других элементов управления..Это особенно полезно, если вы хотите программно сгенерировать элементы управления, скрыть/показать группу элементов управления или локализовать группу элементов управления.

А Direction Свойство полезно для локализации содержимого элемента управления Panel для отображения текста на языках, написанных справа налево, таких как арабский или иврит.

Элемент управления Panel предоставляет несколько свойств, которые позволяют настраивать поведение и отображение его содержимого.Использовать BackImageUrl для отображения пользовательского изображения для элемента управления Panel.Использовать ScrollBars свойство, позволяющее указать полосы прокрутки для элемента управления.

Небольшие различия при рендеринге HTML:элемент управления PlaceHolder ничего не отображает, но элемент управления Panel будет отображаться как <div>.

Дополнительная информация на Форумы ASP.NET

Странная ошибка * в Visual Studio 2010: если вы поместите элементы управления внутри заполнителя, они не отобразятся в режиме просмотра дизайна.

Особенно это касается этикеток Hidenfields и Empty.

Мне бы хотелось использовать заполнители вместо панелей, но меня не устраивает тот факт, что я не могу разместить другие элементы управления внутри заполнителей во время разработки в графическом интерфейсе.

Как упоминалось в других ответах, Панель генерирует <div> в HTML, а PlaceHolder — нет.Но есть гораздо больше причин, по которым вы можете выбрать любой из них.

Почему PlaceHolder?

Поскольку он не генерирует собственный тег, вы можете безопасно использовать его внутри другого элемента, который не может содержать тег. <div>, например:

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

Вы также можете использовать PlaceHolder для управления видимостью группы элементов управления, не заключая ее в <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>

Почему панель

Он генерирует свои собственные <div> а также может использоваться для упаковки группы элементов управления.Но у панели есть гораздо больше свойств, которые могут быть полезны для форматирования ее содержимого:

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

Но самой полезной функцией является DefaultButton свойство.Когда идентификатор совпадает с кнопкой на панели, он запускает публикацию формы с проверкой, когда enter нажимается внутри текстового поля.Теперь пользователь может отправить форму, не нажимая кнопку.

<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 внутри TextBox1

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top