У меня есть сотни устаревших веб-страниц, добавляющих верхний и нижний колонтитулы через переопределение BasePage Render
protected override void Render(HtmlTextWriter writer)
{
RenderHeader(writer);
base.Render(writer);
RenderFooter(writer);
}
Новые страницы используют MasterPage для поведения по умолчанию.
Хотелось бы узнать, возможно ли добавить элемент управления содержимым asp: из базовой страницы без изменения каждого * .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 Controls могло бы помочь, но я не нашел решения.