Я ищу способ динамической загрузки главной страницы, чтобы получить коллекцию ContentPlaceHolders внутри.Найти ContentPlaceHolders на главной странице
Я бы предпочел не загружать объект страницы, чтобы назначить главную страницу, прежде чем я получу доступ к ее элементам управления, но если это единственный способ, я буду рад использовать его. Это так, как я надеялся, что это будет работать:
Page page = new Page();
page.MasterPageFile = "~/home.master";
foreach (Control control in page.Master.Controls)
{
if (control.GetType() == typeof(ContentPlaceHolder))
{
// add placeholder id to collection
}
}
Но page.Master
бросает пустую ссылку исключение. Похоже, что он загружается в какой-то момент, когда фактическая страница была создана в жизненном цикле страницы.
Я даже подумал о динамическом изменении MasterPageFile текущей страницы на странице_Init(), прочитав все ContentPlaceHolders, а затем вернул оригинал MasterPageFile, но это было бы ужасно!
Есть ли способ загрузить главную страницу в память независимо от фактической страницы, чтобы я мог получить доступ к ее свойствам?
В конечном итоге, мой последний вариант, вероятно, потребует анализа содержимого главной страницы для ContentPlaceHolders, что не так элегантно, но может быть немного быстрее.
Кто может помочь? Большое спасибо.
Отлично, это именно то, что я пытался сделать и в гораздо более изящным способом. Благодаря! –
@GarryM, я получил некоторое время и немного очистил код. –