2010-09-06 3 views
1

У меня есть сотни старых 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 может помочь, но я не нашел решения.

ответ

0

Это нелегкое решение, но я закончил тем, что сделал массивный поиск и заменил его на старой базе кода. Это заняло пару дней, но я думаю, что это стоило усилий, поскольку каждая страница теперь работает против одной и той же базы кода. Это всегда будет напоминать мне, что держать передний конец DRY столь же важно, как и уход за задним концом.

Смежные вопросы