Как работать с веб-элементами управления в библиотеке классов, которые имеют файловые зависимости - PullRequest
1 голос
/ 01 сентября 2011

Я мог бы сделать с небольшим руководством, если это возможно ..

Я строю библиотеку классов, чтобы содержать пользовательские веб-элементы управления.Я преобразовал многие элементы пользовательского интерфейса 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, такой как класс, который приложение-заполнитель может заполнить, а затем предоставьте каждомуконтроль, как он создан.Тем не менее, это кажется запутанным и может привести к путанице для других разработчиков.

Если кто-то сталкивался с этой проблемой и мог бы сэкономить мне некоторые советы, которые были бы блестящими:)

1 Ответ

1 голос
/ 01 сентября 2011

Если это пользовательский элемент управления, он имеет ссылку на класс Page, который затем вызывает метод ResolveClientUrl для создания относительного URL-адреса для вас. Так что это может позаботиться об этом сценарии. Возможно, вы захотите предоставить свойство ScriptsFolder, которое позволит вам хранить путь к сценариям, а не жестко его кодировать.

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

Для подтверждения я использую элементы управления Telerik, и они идут по пути наличия свойства, определяющего пользовательский путь к сценарию (поскольку они полагаются на один для конкретного элемента управления), и у них также есть определенные параметры, которые могут быть переопределены добавив настройки приложения.

НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...