2010-09-06 13 views
1

我有上百個傳統的網絡表單頁面通過BasePage的覆蓋添加頁眉和頁腳渲染移植舊網頁使用masterpages

protected override void Render(HtmlTextWriter writer) 
    { 
     RenderHeader(writer); 
     base.Render(writer); 
     RenderFooter(writer); 
    } 

新頁面使用母版的默認行爲。

我想知道是否有可能從BasePage添加asp:content控件而不更改每個* .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

這不是一個容易的解決方案,但我最終做了一個大規模的搜索並替換舊的代碼庫。這花了幾天的時間,但我認爲這是值得的,因爲每個頁面現在都運行在相同的代碼庫上。它總是會提醒我,保持前端乾爽與照顧後端一樣重要。