Ответ 1
Вам нужно будет создать составные элементы управления вместо элементов управления .ASCX, если вы захотите использовать их в отдельных проектах.
Предположим, у вас есть 2 разных приложения ASP.NET в IIS. Кроме того, у вас есть элементы управления ASCX, которые вы хотите использовать в этих двух приложениях.
Какой лучший способ создать "библиотеку пользовательского управления", чтобы вы могли использовать одну и ту же реализацию управления в двух приложениях, не имея необходимости дублировать код?
Элементы управления имеют ASCX с кодом HTML +.
Композитные элементы управления будут сложными, потому что мы работаем с дизайнерами, которые используют синтаксис HTML в файлах ASCX для стилизации элементов управления.
Tundey, мы используем SVN здесь. У вас есть пример того, как реализовать свое предложение? Как SVN может совместно использовать элементы управления ASP.NET?
Спасибо!
Вам нужно будет создать составные элементы управления вместо элементов управления .ASCX, если вы захотите использовать их в отдельных проектах.
http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx
В дополнение к тому, что сказал Тунди, расширение оболочки NTFS Link полезно, когда речь идет об обмене большим количеством контента (например: папка с .ascx/.aspx) между другими независимыми проектами. В случае кода я думаю, что создание другой рабочей копии из VCS является предпочтительным.
Посмотрите на это: http://www.codeproject.com/KB/aspnet/ASP2UserControlLibrary.aspx?msg=1782921
Альтернативой является использование средства управления исходным кодом для "совместного использования" элементов управления ASCX между вашими веб-приложениями. Это позволит вам вносить изменения в элементы управления в любом приложении и контролировать источник, чтобы изменения отражались в наших веб-папках.
Мне удалось это сделать, жертвуя некоторой легкостью создания элементов управления в первую очередь.
Вы можете создать проект библиотеки управления, который будет генерировать DLL библиотеки управления для вас. Недостатком является то, что вам нужно создать элементы управления только с кодом. В моем последнем проекте это было прекрасно. В более сложных элементах управления это может быть проблемой.
Вот пример:
<DefaultProperty("Text"), ToolboxData("<{0}:BreadCrumb runat=server />")> _
Public Class BreadCrumb
WebControl
<Bindable(True)> _
Property Text() As String
'...'
End Property
Protected Overrides Sub RenderContents(output as HtmlTextWriter)
output.write(Text)
End Sub
Private Sub Page_Load(...) Handles MyBase.Load
' Setup your breadcrumb and store the HTML output '
' in the Text property '
End Sub
End Class
Все, что вы помещаете в это свойство Text, будет отображаться.
Затем любые элементы управления, которые вы вводите здесь, могут функционировать точно так же, как и любой другой элемент управления, который вы используете. Просто импортируйте его в свою панель инструментов, сделайте свою регистрационную ссылку, затем переверните ее на страницу ASP.
Я использую StarTeam здесь, и он позволяет вам "разделить" объекты (файлы, запросы на изменение, требования и т.д.) в нескольких папках. Не уверен, имеет ли Subversion (SVN) эту функцию. Если это не так, вот еще один трюк, который вы можете использовать: создать соединение из основного расположения элементов управления в местоположение в других проектах. Соединение похоже на символическую ссылку Unix. Вы можете загрузить инструмент для создания соединений в Windows из здесь
Самая большая проблема, которую я заметил с помощью элементов управления в ASP.Net, заключается в том, что вы не можете легко получить конструкторскую поддержку как для создания элемента управления, так и для использования элемента управления на сайте после его создания. Единственный способ, которым я смог это сделать, - создать элемент управления .ascx без кода (т.е. Весь код на стороне сервера находится в теге script в файле .ascx с сервером runat = "server" атрибут).
Но даже тогда вам все равно придется копировать файл .ascx, поэтому, если вам когда-либо понадобится внести изменения, это означает обновление файла в любом месте, где вы его использовали. Так что да, убедитесь, что это в контроле источника.
Недавно я сделал веб-приложение, которое просто ссылалось на файлы (всего около 90) из одного веб-приложения (aspx, master и ascx) без большой проблемы. Тем не менее, я использовал сильно измененную версию шаблон MVP, множество интерфейсов и соглашений, чтобы снизить сложность, тот же средний уровень и один сайт был подмножеством другого.
Большие проблемы:
Я был под сильным давлением времени, чтобы заставить его работать, и теперь оба приложения находятся в производстве. Я бы не рекомендовал его, но если вы заинтересованы в:
Добавьте существующий элемент, выберите некоторые файлы, нажмите кнопку "Добавить кнопки" и скажите "Добавить как ссылку".
У меня есть предложение. Мы можем использовать пользовательский контроль в приложении с множественными значениями, создавая пользовательский контроль внутри проекта веб-сайта как обычно. Затем измените свойство веб-сайта. Используйте фиксированные имена и отдельные узлы. Затем мы можем использовать панель управления пользователя в нескольких приложениях.