Мне интересно, какие элементы управления сервером обычно используют люди для окружения и разделения блоков связанных элементов управления и содержимого в сценарии веб-форм. Часто мне нужно окружить блок HTML и связанных серверных элементов управления «панелью», которую я могу показать или скрыть на основе некоторой логики пользовательского интерфейса в коде. Я обычно сталкиваюсь с использованием Panel, однако это не работает, если мне нужно окружить несколько TR в таблице, например, потому что Panel отображается как div, который недействителен внутри тега Table. В этой ситуации я обычно просто устанавливаю каждый TR для запуска сервера и показываю / скрываю каждый из них по отдельности, но должен быть способ лучше. Я видел элемент управления PlaceHolder, используемый для этого сценария, но хотел знать, делает ли кто-нибудь это или есть какие-либо другие предложения.
Лучший серверный контроль для окружающих блоков
Ответы (4)
Я не думаю, что есть однозначный ответ, верный для всех сценариев - у нас нет сотен инструментов, поэтому мы всегда можем использовать молоток.
Панели отлично подходят для тех случаев, когда результирующий div будет работать нормально. PlaceHolder наследуется от Control вместо WebControl, поэтому вы можете аргументировать, что он использует меньше накладных расходов. Когда у меня есть таблица, и мне нужно скрыть отдельную строку таблицы, у меня нет никаких проблем с добавлением id и runat = "server" в tr.
Или, когда мне нужно создать отличную большую таблицу элементов управления редактора (это подходит в 90% случаев, когда я хотел бы скрыть одну строку таблицы), я даже сделал элемент управления, который автоматизирует часть разметки для меня. . Этот элемент управления автоматизирует текст заголовка поля, независимо от того, делать ли его полужирным (обязательно), добавляет всплывающую подсказку с всплывающей подсказкой, и все, что мне нужно добавить вручную, - это текстовое поле или другой элемент управления редактора. Положительный побочный эффект заключается в том, что мой настраиваемый элемент управления дает мне идентификатор, который я также могу установить для Visible.
Даже с элементом управления PlaceHolder Visual Studio будет жаловаться на то, что у вас нет действительного HTML.
Вы можете стиснуть зубы и сделать это с помощью блоков кода на стороне сервера, которые обращаются к свойствам кода позади:
<table>
<tr>
....
</tr>
<% if( ShowSecretRow ) { %>
<tr>
<td>shhh!</td>
</tr>
<% } %>
</table>
Однако будьте осторожны ... это скользкая дорожка, и вы не хотите, чтобы ваш ASPX был слишком запутанным.
Возможно буквальный контроль.
Вы можете использовать любой элемент html, который хотите, просто дайте ему идентификатор и сервер runat. Это дает вам некоторую гибкость.