Используя Panel или PlaceHolder
В чем разница между <asp:Panel >
а также <asp:PlaceHolder >
в ASP.NET?
Когда вы должны использовать один над другим?
5 ответов
Панель расширяется до диапазона (или элемента div) с содержимым внутри него. Заполнитель - это просто заполнитель, который заменяется тем, что вы в него вставили.
Заполнитель не отображает никаких тегов для себя, поэтому он отлично подходит для группировки контента без дополнительных внешних тегов HTML.
У Panel есть внешние HTML-теги, но есть некоторые интересные дополнительные свойства.
BackImageUrl: получает / устанавливает URL-адрес фонового изображения для панели.
HorizontalAlign: получает / устанавливает
горизонтальное выравнивание содержимого родителя- Wrap: получает / устанавливает ли
перенос содержимого панели
Здесь есть хорошая статья на startvbnet.
Управление PlaceHolder
Используйте элемент управления PlaceHolder в качестве контейнера для хранения серверных элементов управления, которые динамически добавляются на веб-страницу. Элемент управления PlaceHolder не создает видимых результатов и используется только в качестве контейнера для других элементов управления на веб-странице. Вы можете использовать Control.Controls
коллекция, чтобы добавить, вставить или удалить элемент управления в элементе управления PlaceHolder.
Панель управления
Элемент управления Panel является контейнером для других элементов управления. Это особенно полезно, когда вы хотите сгенерировать элементы управления программно, скрыть / показать группу элементов управления или локализовать группу элементов управления.
Direction
Свойство полезно для локализации содержимого элемента управления Panel для отображения текста для языков, написанных справа налево, таких как арабский или иврит.
Элемент управления Panel предоставляет несколько свойств, которые позволяют настраивать поведение и отображение его содержимого. Использовать BackImageUr
l свойство для отображения пользовательского изображения для элемента управления Panel. Использовать ScrollBars
свойство для указания полос прокрутки для элемента управления.
Небольшие различия при рендеринге HTML: элемент управления PlaceHolder не будет отображать ничего, но элемент управления Panel будет отображаться как <div>
,
Больше информации на форумах ASP.NET
Странная ошибка * в Visual Studio 2010: если вы помещаете элементы управления в Placeholder, они не отображаются в режиме просмотра дизайна.
Это особенно верно для меток Hidenfields и Empty.
Я хотел бы использовать заполнители вместо панелей, но я ненавижу тот факт, что не могу поместить другие элементы управления внутри заполнителей во время разработки в GUI.
Как уже упоминалось в других ответах, Группа создает <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>
и может также использоваться, чтобы обернуть группу Контолов. Но у Panel гораздо больше свойств, которые могут быть полезны для форматирования ее содержимого:
<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
нажимается внутри TextBox. Теперь пользователь может отправить форму, не нажимая кнопку.
<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