У меня есть сотни старых WebForm страниц добавления заголовка и колонтитула через BasePage переопределяя РендерПортирования старых страниц использовать MasterPages
protected override void Render(HtmlTextWriter writer)
{
RenderHeader(writer);
base.Render(writer);
RenderFooter(writer);
}
Новых страниц используют MasterPage для поведения по умолчанию.
Я хотел бы знать, можно ли добавить элемент управления asp: content из BasePage без изменения каждого * .aspx?
Я сделал небольшой тест, который работает до тех пор, нет никакого содержания в ASPX
public partial class OldPage : Page
{
private MainContentTemplate mainContentTemplate;
protected override void OnPreInit(EventArgs e)
{
Page.MasterPageFile = "~/Site.Master";
mainContentTemplate = new MainContentTemplate();
AddContentTemplate("Main", mainContentTemplate);
base.OnPreInit(e);
}
}
public class MainContentTemplate : ITemplate
{
#region ITemplate Members
void ITemplate.InstantiateIn(Control container)
{
container.Controls.Add(new LiteralControl("Test string"));
}
#endregion
}
Но как только я что-то добавить к коду перед я буду получать: Элементы управления содержимым должны быть ТОП- уровня на странице содержимого или вложенной главной странице, ссылающейся на главную страницу.
Я не уверен, но я думаю, что переопределение элементов управления ControlCollection может помочь, но я не нашел решения.