Я мог бы сделать с небольшим руководством, если это возможно ..
Я строю библиотеку классов, чтобы содержать пользовательские веб-элементы управления.Я преобразовал многие элементы пользовательского интерфейса jQuery в классы .NET для динамического использования на страницах.например,
Dim Msg As New Dialog("Dialog Title", New LiteralControl("Dialog Content"))
Msg.Width.Value = 500
Msg.Height.Value = 300
Me.Controls.Add(Msg )
Необходимые сценарии вставляются в заголовок во время CreateChildControls, а любые ссылки на файлы jQuery добавляются в заголовок, например,
RegisterScriptFile("~/Scripts/jquery-1.5.1.js")
RegisterScriptFile("~/Scripts/UI/jquery.ui.core.js")
RegisterScriptFile("~/Scripts/UI/jquery.ui.widget.js")
RegisterScriptFile("~/Scripts/UI/jquery.ui.mouse.js")
RegisterScriptFile("~/Scripts/UI/jquery.ui.draggable.js")
RegisterScriptFile("~/Scripts/UI/jquery.ui.position.js")
RegisterScriptFile("~/Scripts/UI/jquery.ui.resizable.js")
RegisterScriptFile("~/Scripts/UI/jquery.ui.dialog.js")
Базовый класс WebControl обрабатывает вставку ссылок вГлава страницы.
Это замечательно, однако есть проблема ... Пути к файлам могут отличаться в разных приложениях, использующих библиотеку элементов управления.
Я могу выбрать следующие варианты:
A) Встраивать файлы как ресурсы в саму библиотеку .... однако стиль CSS не будет настраиваться между отдельными приложениями, и любые изменения в CSS / JS потребуют повторной компиляции.
B) Определите и используйте стандартизированную файловую иерархию.Каждое приложение, нуждающееся в папке, вызывает 'Scripts' с фиксированной иерархией файлов внутри, поэтому элемент управления знает, где ссылаться на требуемые файлы.Проблема, которую я вижу здесь, заключается в том, что не всегда возможно использовать эту стандартизированную иерархию и может сделать использование библиотеки громоздким.
C) Создайте свойство для каждого элемента управления, для каждого файла, который ему требуется.Опять же, это станет громоздким и трудным для использования, потому что каждый экземплярный элемент управления должен иметь эти свойства установленными.
D) Создайте некоторый словарь ResourceUrlLibrary, такой как класс, который приложение-заполнитель может заполнить, а затем предоставьте каждомуконтроль, как он создан.Тем не менее, это кажется запутанным и может привести к путанице для других разработчиков.
Если кто-то сталкивался с этой проблемой и мог бы сэкономить мне некоторые советы, которые были бы блестящими:)