J'ai des centaines de pages Webform existants en ajoutant en-tête et pied de page via un BasePage remplaçant renduvieilles pages de portage utiliser MasterPages
protected override void Render(HtmlTextWriter writer)
{
RenderHeader(writer);
base.Render(writer);
RenderFooter(writer);
}
nouvelles pages utilise un MasterPage pour le comportement par défaut.
Je voudrais savoir s'il est possible d'ajouter le contrôle asp: content depuis BasePage sans changer tous les * .aspx?
J'ai fait un petit test qui fonctionne tant il n'y a pas de contenu dans le 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
}
Mais dès que j'ajouter quelque chose au code devant je recevrai: Les contrôles de contenu doivent être top- des contrôles de niveau dans une page de contenu ou une page maître imbriquée faisant référence à une page maître.
Je ne suis pas sûr mais je pense que le contrôle de ControlCollection de dépassement pourrait aider, mais je n'ai pas trouvé une solution.