Поделиться через


Общие сведения о конструкторах элементов управления ASP.NET

Обновлен: Ноябрь 2007

ASP.NET обеспечивает расширенную поддержку создания конструкторов для серверных веб-элементов управления. Конструкторы позволяют создавать пользовательский интерфейс времени разработки для элемента управления, таким образом, чтобы разработчики могли настраивать свойства и содержимое элемента управления и содержимое в средстве визуального проектирования, так же, как в Visual Studio. Основные сведения об архитектуре и возможностях времени разработки, предоставляемых платформой .NET Framework см. в разделе Расширение поддержки времени разработки.

В данном предисловии описаны возможности конструкторов элементов управления ASP.NET, классы базовых конструкторов и их функциональность, а также сценарии работы с конструкторами.

Возможности конструктора

С тех пор, как ASP.NET стала поддерживать архитектуру конструкторов ранних версий, в ней появились значительные усовершенствования.

  • Редактирование на основе регионов. Регионы — это области, изменяемые во время разработки элемента управления. Данная возможность обеспечивает редактирование содержимого элемента во время разработки в режиме WYSIWYG.

  • Списки действий. Списки действий — это меню задач, которые разработчик страницы элемента управления может использовать в режиме разработки пользовательского интерфейса. Например, вид элемента во время разработки обеспечивает меню доступных задач, включая задание для автоматического форматирования элемента управления.

  • Источник данных и конструкторы с привязкой к данным. Конструкторы элементов-источников данных позволяют разработчику страницы настроить элементы управления источником данных. Конструкторы элементов управления с привязкой к данным также позволяют разработчику страницы выполнять настройку элементов управления с привязкой к данным. Доступны возможности для реализации перекрестной связи между конструктором источника данных и конструктором элемента с привязкой к данным. Пример конструктора элемента-источника данных см. в разделе DataSourceDesigner. Пример конструктора элемента управления источником данных см. в разделе HierarchicalDataBoundControlDesigner.

  • Упрощенное редактирование шаблонов. Модель для создания пользовательского интерфейса для редактирования в режиме разработки элементов управления-шаблонов (например GridView) была значительно упрощена и изменена, поэтому разработчик элемента управления может выполнять редактирование своих шаблонов с помощью областей. Пример см. в разделе Пример шаблонного серверного элемента управления.

  • Упрощенная модель объекта. Модель объекта для работы с визуализацией времени разработки существенно упрощена, позволяя разработчику заниматься только значительными проблемами на этапе разработки HTML-кода. Несколько новых базовых классов предоставляют доступ к упрощенной объектной модели: ControlDesigner, ContainerControlDesigner и CompositeControlDesigner.

  • Подписка для размещения служб. Конструктор элементов управления может подписаться и использовать различные службы, предоставляемые в среде размещения. Например, конструктор элемента может использовать службы Visual Studio 2005 для обеспечения доступа к данным, конфигурации, добавления на страницу элементов управления программными средствами во время разработки, обработки событий мыши в конструкторе, рисования и доступа к другим службам, таким как конструктор состояния.

Классы конструктора

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

  • Отображение и содержимое времени разработки. Конструкторы элементов управления включают несколько видов отображения, простых и сложных. Редактирование на основе регионов и редактирование шаблонов являются примерами видов времени разработки пользовательского интерфейса, которые можно предоставить для элемента управления. Можно также предоставить редактирование столбцов или несколько представлений элемента во время исполнения, поэтому разработчик, работая с элементом в режиме времени разработки может выбрать из множества опций, как элемент управления будет отображаться во время исполнения.

  • Другие классы времени разработки. Помимо классов конструктора, имеются типы преобразователей классов, которые связываются с типом или свойством и выполняют преобразования типов (например, строки в число). Существуют также классы-редакторы типов пользовательского интерфейса, обеспечивающие специализированный пользовательский интерфейс для редактирования свойств. Например, раскрывающийся список выбора цвета в сетке свойств позволяет выбрать значение свойства «цвет» для веб-элемента управления. Можно также создать специализированный редактор компонентов, который является классом, предоставляющим редактирование свойств элемента управления в целом.

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

Существуют несколько базовых классов, которые рекомендуется использовать при создании конструктора для серверных веб-элементов управления:

  • ControlDesigner

    Базовый класс, предоставляющий средства поддержки серверных веб-элементов управления во время разработки.

  • ContainerControlDesigner

    Базовый класс для элемента с одним уровнем вложенности, обеспечивающий редактирование коллекции дочерних элементов. Этот конструктор предоставляет один свободный изменяемый регион, а узел (например Visual Studio 2005) обеспечивает автоматическое отображение элемента.

  • CompositeControlDesigner

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

  • DataSourceDesigner, BaseDataBoundControlDesigner и HierarchicalDataSourceDesigner

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

Сценарии для работы с конструкторами

Существует два типичных сценария, в которых можно работать с конструкторами элементов управления: разработка пользовательских элементов управления и разработка средств визуального проектирования.

При разработке пользовательских серверных веб-элементов управления можно создавать связанные конструкторы для увеличения возможностей разработчика страницы по настройке элемента управления во время разработки. Этот сценарий особенно полезен, если элемент управления может повторно использоваться другими разработчиками. Например, можно создать пользовательский элемент управления «Диаграмма». Если создать связанный конструктор элемента управления, разработчики другой интрасети смогут настраивать элемент под разные стили.

При разработке визуальных средств веб-разработки, подобных Visual Studio 2005 или Microsoft FrontPage можно использовать конструктор элементов управления, содержащий различные компоненты. Это позволяет в созданном инструменте предоставлять службы и взаимодействовать с конструкторами элементов управления, чтобы обеспечить отображение пользовательских элементов управления во время разработки.

Дополнительные сведения об архитектуре конструкторов платформы .NET Framework см. в разделе Архитектура времени разработки. Сведения о создании собственных конструкторов для пользовательских серверных веб-элементов управления см. в разделе Пошаговое руководство. Создание базового конструктора элементов управления для серверного веб-элемента управления. Сведения о создании пользовательского конструктора элементов управления со службами и списками действий для предоставления пользовательского интерфейса во время разработки см. в разделе Пример конструктора элементов управления со списками действий и службами.

Защита конструктора пользовательских элементов управления

Когда элемент управления находится в представлении конструирования, конструктор компонентов обрабатывает изменения свойств и отображает разметку в среде конструктора (например, Visual Studio). Во время разработки конструктор компонентов элемента управления запускается с таким же уровнем доверия, как и его хост разработки. Конструктор компонентов может потенциально получить доступ к базам данных, делать вызова на веб-узлах на удаленном сервере, создавать и записывать файлы на компьютере разработчика, отправлять сообщения электронной почты и выполнять код в других сборках.

В данном подразделе представлены рекомендации, которые помогут повысить безопасность при использовании возможностей конструкторов элементов управления.

Для повышения безопасности приложений в дополнение к следующему коду и конфигурации рекомендуется проверить, что сервер приложений постоянно находится на уровне современных требований последних обновлений безопасности для Microsoft Windows и служб IIS. Следует также убедиться в наличии последних выпусков любых коммерческих пакетов пользовательского программного обеспечения, установленного на компьютере.

Более подробные сведения о рекомендациях по написанию безопасного кода и защите приложений можно найти в книге «Защищенный код» авторов Майкла Ховарда и Дэвида Леблана. Дополнительные рекомендации см. на веб-узле Центр разработчиков шаблонов и примеров Microsoft и Guidelines and Best Practices.

Вопросы безопасности для пользователей пользовательских элементов управления

Следует иметь в виду, что пользовательские элементы управления из неизвестных источников могут содержать конструкторы, которые открывают доступ к конфиденциальным данным с компьютера в Интернет, или запускают вредоносный код во время разработки. Нельзя использовать конфигурацию кода доступа для ограничения доступа конструкторам элементов управления, так как они должны всегда выполняться в среде конструктора с полным доверием. Дополнительные сведения об уровнях доверия см. в разделе Уровни доверия и файлы политик ASP.NET. Дополнительные сведения об управлении доступом для кода см. в разделе Знакомство с управлением доступом для кода.

Вопросы безопасности для разработчиков пользовательских элементов управления

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

По возможности не используйте фактические данные из базы данных для отображения примеров структур для предварительного просмотра данных элементов управления, например, GridView. Это может привести к утечке конфиденциальных данных из базы данных. Вместо этого используйте примеры структур данных для создания предварительных просмотров.

Вопросы безопасности для разработчиков среды конструктора

При разработке среды конструктора (например, Visual Studio), перед отображением следует проверить разметку HTML, текст и другие данные, возвращаемые конструктором, во избежание возникновения угроз безопасности. Кроме того, необходимо ограничить размер строк разметки HTML и областей конструктора до управляемых размеров. Дополнительные сведения о проверке HTML см. в разделе Проверка сведений, вводимых пользователем на веб-страницах ASP.NET

Поддержка нескольких средств разработки

Microsoft Visual Web Developer поддерживает все возможности, рассмотренные в данном подразделе, но другие средства разработки могут не поддерживать их. Примеры возможностей, которые могут не поддерживаться:

См. также

Основные понятия

Архитектура времени разработки

Пример конструктора элементов управления со списками действий и службами

Другие ресурсы

Design-Time Support for ASP.NET Web Pages

Расширение поддержки времени разработки