Выдает ошибку, если на странице нет зависимого элемента управления. - PullRequest
1 голос
/ 04 марта 2010

Хорошо, я делаю пару JQuery-версий элементов управления AJAXToolkit (у нас были проблемы с инструментарием) и хочу иметь общую версию сценариев, которая им нужна на странице.

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

Кто-нибудь знает эффективный способ:

  • Проверьте, существует ли на странице элемент управления ControlManager, если некоторые другие JQueryControls делают
  • Добавьте каждый элемент управления в коллекцию в ControlManager, предполагая, что ответ на первую точку не возвращает экземпляр JQueryControlManager

ИЛИ

У кого-нибудь есть предложения по лучшему решению?

1 Ответ

1 голос
/ 10 марта 2010

В частности, для скриптов в ASP.NET уже есть класс ScriptManager, который поддерживает то, что вы пытаетесь сделать. Позвоните

Page.ClientScript.RegisterClientScriptInclude(key, url);

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

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

public ControlManager GetControlManager()
{
    foreach (Control control in Page.Controls)
    {
        if (control is ControlManager)
            return (ControlManager)control;
    }

    ControlManager manager = new ControlManager();
    Page.Controls.Add(manager);

    return manager;
}

или вы можете попытаться сохранить экземпляр ControlManager в словаре Page.Items.

Предупреждение: Я не проверял этот код, поэтому рассматривайте его как псевдокод.

...