Совместное использование ASCX-элементов управления между различными веб-приложениями

#.net #asp.net #web-controls #ascx

#.net #asp.net #веб-элементы управления #ascx

Вопрос:

Возможно ли совместное использование веб-элементов управления (ASCX-файлов) между различными веб-приложениями?

Рассматриваемые файлы являются частью другого веб-проекта. Я попытался отредактировать web.config, чтобы ссылаться на файлы ascx, но я получил синтаксические ошибки, это говорит мне, что мне не разрешено использовать «..» в этом пути.

 <pages>
   <controls>
      <add tagPrefix="my" tagName="IntegerInput" src="~/../MyCommonProject/controls/basic/IntegerInput.ascx" />
  

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

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

Как мы можем это решить?

Ответ №1:

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

В MSDN есть статья здесь.

Комментарии:

1. Для нас об этом не может быть и речи, поскольку элементов управления слишком много

Ответ №2:

Я нашел два решения этой проблемы:

  • Создайте проект, содержащий ascx’ы и код. Исходные файлы этого проекта совместно используются с другими проектами, использующими ascx’es (т.Е. xcopies для). (блог)

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

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

Ответ №3:

Есть еще одно потенциальное решение:

Храните элементы управления в одном каталоге на одном веб-сайте, который вы считаете «основным»; затем создайте виртуальный каталог на другом сайте, который указывает на тот же физический каталог.

Это действительно может работать только для ascx файлов, а не для их исходного кода.