В чем разница между UserControl, WebControl, RenderedControl и CompositeControl? - PullRequest
50 голосов
/ 16 сентября 2008

В чем разница, каковы официальные условия, являются ли какие-либо термины устаревшими в ASP.NET 3.5?

Ответы [ 5 ]

47 голосов
/ 16 сентября 2008

UserControl : Пользовательский элемент управления, заканчивающийся на .ascx, который состоит из других веб-элементов управления. Это почти как маленькая версия веб-страницы aspx. Он состоит из пользовательского интерфейса (ascx) и codebehind. Не может быть повторно использован в других проектах, ссылаясь на DLL.

WebControl : элемент управления, размещенный на веб-странице или в UserControl. Он состоит из одного или нескольких классов, работающих в тандеме, и размещается на странице aspx или в UserControl. WebControls не имеют пользовательского интерфейса «страницы» и должны отображать их содержимое напрямую. Их можно повторно использовать в других приложениях, ссылаясь на их библиотеки DLL.

RenderedControl : не существует. Может быть синонимом WebControl. Может означать, что элемент управления записывается непосредственно в HttpResponse, а не выводится на страницу aspx.

CompositeControl : между пользовательскими элементами управления и веб-элементами управления. Они кодируют как UserControls, так как состоят из других элементов управления. Графического пользовательского интерфейса для создания элементов управления не существует, а поддержка редактирования пользовательского интерфейса CompositeControls должна быть закодирована разработчиком элемента управления. Компоновка выполняется в коде позади. CompositeControls можно повторно использовать в других проектах, таких как WebControls.

8 голосов
/ 16 сентября 2008

Вы забыли управление сервером.

В моем понимании это так:

  • Существует только два разных типа элементов управления: UserControl и ServerControl
  • CompositeControls - это своего рода «продвинутые» UserControls. Найдите больше информации о Блоге Скотта Гатриса .
  • Все они являются WebControls (потому что все они получены из System.Web.UI.Control)
  • Они все визуализируются любым способом, поэтому я хотел бы видеть их всех как визуализированные элементы управления.

Из MSDN:

Контроль пользователя

В ASP.NET: сервер контроль, который написан декларативно используя тот же синтаксис, что и ASP.NET страницы и сохраняется как текстовый файл с расширение .ascx. Пользовательские элементы управления разрешить функциональность страницы разделены и использованы повторно. По первому запрос, фреймворк страницы анализирует пользовательский контроль в классе, который выводит от System.Web.UI.UserControl и компилирует этот класс в сборку, который он использует в последующем Запросы. Пользовательские элементы управления легко развиваться из-за их стиля страницы разработка и развертывание без предварительного сборник.

Управление сервером

Серверный компонент который заключает в себе пользовательский интерфейс и связанная функциональность. ASP.NET управление сервером происходит напрямую или косвенно из Класс System.Web.UI.Control. расширенный набор серверных элементов управления ASP.NET включает элементы управления веб-сервером, HTML серверные элементы управления и ASP.NET для мобильных устройств управления. Синтаксис страницы для ASP.NET серверный элемент управления включает в себя runat = "сервер" атрибут на тег элемента управления. Смотрите также: HTML сервер контроль, валидация серверных контролей, Управление веб-сервером.

3 голосов
/ 14 февраля 2011

Как и веб-формы, пользовательские элементы управления могут создаваться в визуальном конструкторе или они могут быть написаны с кодом, отдельным от HTML. Они также могут поддерживать события выполнения. Однако, поскольку пользовательские веб-элементы управления динамически компилируются во время выполнения, они не могут быть добавлены в панель инструментов и представлены простым заполнителем при добавлении на страницу.

Это затрудняет использование пользовательских веб-элементов управления, если вы привыкли к полной поддержке Visual Studio .NET во время разработки, включая окно «Свойства» и предварительный просмотр представления «Дизайн». Кроме того, единственный способ разделить пользовательский элемент управления между приложениями - это поместить отдельную копию в каждое приложение, что требует больше обслуживания, если вы вносите изменения в элемент управления.

Пользовательские веб-элементы управления - это скомпилированный код, который делает их более простыми в использовании, но более сложными для создания. Пользовательские веб-элементы управления должны быть созданы в коде. Создав элемент управления, вы можете добавить его на панель инструментов и отобразить в визуальном конструкторе с полной поддержкой окна свойств и всеми другими функциями времени разработки серверных элементов управления ASP.NET. Кроме того, вы можете установить одну копию пользовательского веб-элемента управления в глобальном кэше сборок и поделиться ею между приложениями, что упрощает обслуживание.

2 голосов
/ 16 ноября 2011

Вопреки ответу Уилла, можно повторно использовать UserControls в других проектах, ссылаясь на проект веб-развертывания .

0 голосов
/ 09 июня 2009

Поскольку у меня пока недостаточно репутации, чтобы комментировать, я добавлю это в качестве ответа, но это относится к ответу Уилла выше.

Из ссылки вы включили:

Составные элементы управления - это правильный инструмент для создания сложных компонентов, в которых несколько дочерних элементов управления объединяются и взаимодействуют между собой и с внешним миром. Отрисованные элементы управления подходят только для агрегирования элементов управления только для чтения, в которых выходные данные не содержат интерактивных элементов, таких как раскрывающийся список или текстовые поля.

Я полагаю, что документация ссылается на UserControls, которые были созданы путем переопределения метода Render как Rendered Controls. Таким образом, это не отдельный тип, как предполагает вопрос, а способ реализации UserControl; шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...