ScriptManager, Page, статические методы ... как мне получить текущий ScriptManager без Page? - PullRequest
2 голосов
/ 15 января 2011

Я пытаюсь расширить ScriptManager, чтобы упростить работу с ресурсами, которые имеют несколько файлов ресурсов (например, более одного файла сценария, а также CSS). Цель состоит в том, чтобы я мог добавить один ScriptReference к Scripts и заставить его загружать более одного ресурса, связанного с этим ссылочным именем.

Что я застреваю, как ваш базовый ScriptManager знает, что делать с вещами, когда используются статические методы, которые не включают параметр Page? Например:

ScriptManager.ScriptResourceMapping.AddDefinition("someName", new
   ScriptResourceDefinition { Path="/script/somescript.js"});

Это добавляет определение (я думаю) к тому, что активный менеджер скриптов для страницы, которая работает, когда вы вызываете его. Но в отличие от методов старой школы, таких как RegisterClientScriptBlock, не передается параметр, идентифицирующий страницу. Но эти вещи должны храниться в объекте ScriptManager, нет? Так как это узнать?

Я всегда мог получить ссылку на активный с этим:

ScriptManager.GetCurrent(page);

но в идеале я бы создал новые методы, которые работают точно так же, как Microsoft. Я не могу понять, как я мог бы реализовать что-то вроде

ScriptManager.ScriptResourceMapping.AddDefinition(string name,
    ScriptResourceDefinition definition,
    ResourceType type)

, который может определить экземпляр объекта для добавления материала без необходимости добавления параметра Page. Как-то они это делают ... как я могу?

1 Ответ

8 голосов
/ 15 января 2011

Вы получаете ссылку на страницу через (Page)(HttpContext.Current.Handler) даже в статическом контексте.

...