Причина метода ScriptManager.GetCurrent - PullRequest
2 голосов
/ 15 февраля 2012

Команда Asp.net разработала диспетчер сценариев так, чтобы на странице существовал только один экземпляр (HttpHandler), я не могу найти вескую причину, почему они расширили метод, такой как ScriptManager.GetCurrent, чтобы получитьэкземпляр внутри страницы.Почему разработчики не могли сделать

if(ScriptManager == null)
{
    throw new Exception("The Below ajax control requires ScriptManager in the page");
}

1 Ответ

2 голосов
/ 15 февраля 2012

Я полагаю, потому что для доступа к реальному ScriptManager могут быть и другие места, помимо кода файла файла. С помощью статического метода GetCurrent () вы можете получить доступ к ScriptManager текущего контекста из любой точки кода (например, из библиотеки классов). Реализация GetCurrent выглядит следующим образом:

public static ScriptManager GetCurrent(Page page)
{
    if (page == null)
    {
        throw new ArgumentNullException("page");
    }
    return page.Items[typeof(ScriptManager)] as ScriptManager;
}

Следовательно, это просто ярлык для доступа к экземпляру ScriptManager.

Ваш код не будет работать со страницы содержимого или пользовательского элемента управления, если ScriptManager определен на главной странице.

...