Использование панели или заполнителя


в чем разница между <asp:Panel > и <asp:PlaceHolder > in ASP.NET?

когда вы должны использовать один над другим?

5 144

5 ответов:

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

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

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

  • BackImageUrl: возвращает / задает URL фонового изображения для панели

  • HorizontalAlign: возвращает / задает
    горизонтальное выравнивание родителя содержание

  • Wrap: Получает / Устанавливает будь то
    содержимое панели обертывает

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

управление заполнитель

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

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

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

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

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

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

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

I странная ошибка* в visual studio 2010, если вы помещаете элементы управления внутри заполнителя, он не отображает их в режиме конструктора.

Это особенно верно для скрытых полей и пустых меток.

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

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

почему прототип?

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

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

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