Можно ли добавить пользовательский веб-элемент управления в библиотеку классов? - PullRequest
9 голосов
/ 29 декабря 2008

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

Ответы [ 6 ]

5 голосов
/ 29 декабря 2008

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

Возможно, вам следует подумать о создании библиотеки Web Custom Control. Существует пошаговое руководство по созданию настраиваемого веб-элемента управления с использованием шаблона библиотеки веб-элементов управления .

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

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

Однако, поскольку сеть пользовательские элементы управления компилируются динамически во время выполнения они не могут быть добавлены к Панель инструментов, и они представлены простым глифом заполнителя, когда добавлено на страницу. Это делает веб-пользователя контроли сложнее в использовании, если вы привыкли к полной Visual Studio .NET поддержка во время разработки, включая Окно свойств и вид конструктора предварительные просмотры.

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

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

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

2 голосов
/ 29 декабря 2008

Выполните следующие действия (из этого поста Фила Хаакеда):

  1. Закрыть VS.NET 2005.

  2. Откройте каталог C **: \ Program Files \ Microsoft Visual Studio 8 \ Web \ WebNewFileItems \ CSharp ** (при условии установки VS.NET по умолчанию).

  3. Откройте файл CSharpItems.vsdir в Блокноте. Выделите текст и скопируйте его в буфер обмена.

  4. Теперь откройте файл C: \ Program Files \ Microsoft Visual Studio 8 \ VC # \ CSharpProjectItems \ CSharpItems.vsdir и вставьте содержимое буфера обмена под существующий текст.

  5. Теперь скопируйте содержимое C: \ Program Files \ Microsoft Visual Studio 8 \ Web \ WebNewFileItems \ CSharp (исключая CSharpItems.vsdir) в папку C: \ Program Files \ Microsoft Visual Studio 8 \ VC # \ CSharpProjectItems .

Теперь «Веб-контроль пользователя» должен быть опцией при выборе «Добавить | Новый предмет

Ссылка: http://haacked.com/archive/2006/02/07/addingwebusercontroltoaclasslibraryinvs.net2005.aspx

1 голос
/ 30 декабря 2008

Как упоминает ссылка на platte, если вы собираетесь использовать повторно, то элементы управления пользователями не очень хороши. Файл ascx должен быть скопирован вручную в каждый проект, в котором вы хотите его использовать, или вы должны разобраться с этим.

Лучше использовать System.Web.UI.WebControls.WebControl, который вы получаете, когда добавляете «ASP.NET Server Control». Они предназначены для повторного использования. Если один из существующих элементов управления фреймворком по большей части соответствует требованиям, и вам просто нужно расширить его функциональность, добавьте «ASP.NET Server Control» и измените его, чтобы он наследовал от Panel или Menu или любого другого.

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

0 голосов
/ 29 декабря 2008

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

0 голосов
/ 29 декабря 2008

Вы можете делать что угодно в библиотеке классов.

  1. Добавить ссылку на System.Web
  2. Создайте свой новый класс Control, который наследует из WebControl или HtmlControl или что угодно.

Вот и все. Теперь у вас есть повторно используемый элемент управления для ASP.NET.

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

[DefaultProperty("Text")]
[Category("...")]
[DefaultValue("")]
0 голосов
/ 29 декабря 2008

Существует шаблон проекта под названием «Управление сервером ASP.NET», который, я полагаю, вы можете использовать ...

- larsw

...