Я ищу способ динамической загрузки главной страницы, чтобы получить коллекцию 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 текущей страницы в Page_Init (), чтении всех ContentPlaceHolders и назначении исходного MasterPageFile обратно, но это было бы ужасно!
Есть ли способ загрузить главную страницу в память независимо от реальной страницы, чтобы я мог получить доступ к ее свойствам?
Мое окончательное решение, вероятно, будет включать в себя анализ содержимого главной страницы для ContentPlaceHolders, что не так элегантно, но может быть немного быстрее.
Кто-нибудь может помочь, пожалуйста? Большое спасибо.