#.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
файлов, а не для их исходного кода.