代码之家  ›  专栏  ›  技术社区  ›  orjan

移植旧页以使用母版页

  •  1
  • orjan  · 技术社区  · 14 年前

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

    我想知道是否可以添加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控件可能会有所帮助,但我还没有找到解决方案。

    1 回复  |  直到 14 年前
        1
  •  0
  •   orjan    13 年前

    这不是一个简单的解决办法,但我最终做了一个大规模的搜索,并在旧的代码库替换。这花了几天时间,但我认为这是值得的,因为现在每个页面都运行在相同的代码基础上。它总是会提醒我,保持前端干燥是相当重要的照顾后端。