Яка різниця між ASP.NET <asp:Panel >
і <asp:PlaceHolder >
в ньому?
Коли слід використовувати одне над іншим?
Яка різниця між ASP.NET <asp:Panel >
і <asp:PlaceHolder >
в ньому?
Коли слід використовувати одне над іншим?
Відповіді:
Панель розширюється до діапазону (або діва) із вмістом у ньому. Заповнювач - це лише те, що заповнює замість того, що ви помістите в нього.
Власник заповнення не надає жодних тегів для себе, тому він чудово підходить для групування вмісту без накладних зовнішніх тегів HTML.
Панель має зовнішні теги HTML, але має деякі цікаві додаткові властивості.
BackImageUrl: отримує / встановлює URL-адресу фонового зображення для панелі
HorizontalAlign: отримує / встановлює
горизонтальне вирівнювання вмісту батьків
Існує гарна стаття на startvbnet тут .
Використовуйте елемент управління PlaceHolder як контейнер для зберігання елементів управління, які динамічно додаються на веб-сторінку. Елемент керування PlaceHolder не видає видимих результатів і використовується лише як контейнер для інших елементів керування на веб-сторінці. Ви можете використовувати Control.Controls
колекцію для додавання, вставки або видалення елемента керування в PlaceHolder.
Управління Panel є контейнером для інших елементів управління . Це особливо корисно, коли ви хочете програмно генерувати елементи управління, приховувати / показувати групу елементів управління або локалізувати групу елементів управління.
The Direction
Властивість корисно для локалізації вмісту елемента управління Panel, щоб відображати текст для мов, які пишуться справа наліво, такі як арабська або іврит.
Панель керування надає кілька властивостей, які дозволяють налаштувати поведінку та відображати її вміст. ВикористовуватиBackImageUr
властивість l для відображення спеціального зображення для керування панеллю. Використовуйте ScrollBars
властивість, щоб вказати смуги прокрутки для управління.
Невеликі відмінності при візуалізації HTML: елемент управління PlaceHolder нічого не призведе, але керування панеллю відображатиметься як <div>
.
Детальніше на форумах ASP.NET
Я дивний помилка * у візуальній студії 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 для управління видимістю групи елементів керування, не загортаючи її в a <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>
а також може використовуватися для обгортання групи Contols. Але панель має набагато більше властивостей, які можуть бути корисні для форматування її вмісту:
<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