2008-10-22 3 views
0

Мне интересно, какие серверные элементы управления обычно используют для окружения и разделения блоков связанных элементов управления и контента в сценарии Web Forms. Часто мне нужно окружить блок HTML и связанные с ним элементы управления сервером с помощью «панели», которую я могу показать или скрыть на основе некоторой логики пользовательского интерфейса в коде. Обычно я сталкиваюсь с использованием Panel, однако это не работает, если мне нужно окружить несколько TR в таблице, например, потому что Panel отображает как div, который недопустим внутри тега Table. В этой ситуации я обычно устанавливаю каждый TR на сервер runat и показываю/скрываю каждый из них по отдельности, но должен быть лучший способ. Я видел элемент управления PlaceHolder, используемый для этого сценария, но хотел знать, есть ли у кого-либо это или какие-либо другие предложения.Лучший серверный контроль для окружающих блоков

+0

Не могли бы вы привести пример того, о чем вы говорите? Я не понимаю, почему вы хотите переключать таблицы строк ... – 2008-10-22 18:44:46

+0

Перемещение строк таблицы достаточно просто ... просто дайте tr runat = "server" и ID ... Он хочет, чтобы общий путь для переключения элементов управления, которые в конце концов не генерируют HTML. – 2008-10-22 18:47:02

ответ

1

Я не думаю, что есть один ответ, который справедлив для всех сценариев - у нас нет сотен инструментов, чтобы мы всегда могли использовать молоток.

Панели отлично подходят, когда результирующий div будет работать нормально. PlaceHolder наследует Control, а не WebControl, поэтому вы можете сделать аргумент, что он использует меньше накладных расходов. Когда у меня есть таблица и вам нужно скрыть отдельную строку таблицы, у меня нет никаких компромиссов с добавлением и id и runat = "server" в tr.

Или, когда мне нужно создать большую таблицу элементов управления редактором (это соответствует 90% времени, когда я хотел бы скрыть одну строку таблицы). Я даже сделал элемент управления, который автоматизирует некоторые из разметка для меня. Этот элемент управления автоматизирует текст заголовка поля, независимо от того, делает ли он полужирным (обязательным), добавляет подсказку с подсказкой для опрокидывания, и все, что мне нужно добавить вручную, это текстовое поле или другой элемент управления редактором. Положительный побочный эффект заключается в том, что мой пользовательский контроль дает мне идентификатор, который я также могу установить Visible.

0

Даже с помощью элемента управления PlaceHolder Visual Studio будет жаловаться, что у вас нет действительного HTML.

Вы можете стиснуть зубы и сделать это с помощью блоков коды на стороне сервера, что доступ к свойствам на коде позади:

<table> 
    <tr> 
    .... 
    </tr> 

    <% if(ShowSecretRow) { %> 

    <tr> 
    <td>shhh!</td> 
    </tr> 

    <% } %> 
</table> 

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

0

Возможно, буквальный контроль.

+0

Исправьте меня, если я ошибаюсь, но я не думаю, что вы можете разместить объемный HTML на буквальном, если вы не установите его в свойстве text. Я думаю, если вы попытаетесь окружить кучу HTML в .ascx или .aspx с помощью HTMLHERE, вы получите сообщение об ошибке. – cfbarbero 2008-10-22 19:06:39

0

Вы можете использовать любой элемент html, который хотите, просто укажите его id и сервер runat. Это дает вам некоторую гибкость.

Смежные вопросы