ASP.NET页面继承和重写onInit

时间:2011-07-06 21:42:19

标签: asp.net

 protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    var template = LoadControl(Path);
    if (template == null)
        throw new Exception("Could not located the Template");



    var templateControl = template.FindControl("_placeHolder");
    if (templateControl == null)
        throw new Exception("Could not located the Place Holder");

    templateControl.Controls.Add(_container);

    //This doesnt Work
    for (var i = 0; i < template.Controls.Count;i++ )
    {
        var myControl = template.Controls[i];
        Controls.Add(myControl);
    }
    //This works
    for (var i = 0; i < template.Controls.Count; i++)
    {
        var myControl = template.Controls[0];
        template.Controls.Remove(myControl);
        Controls.Add(myControl);
    }

}

这只是我正在研究的教程。问题是为什么Second for循环显示页面上的输出而第一个不显示。我确实评论其中一个来测试这个。我到底错过了什么,为什么我需要删除控件?

1 个答案:

答案 0 :(得分:0)

我从您的代码中看到的是

for (var i = 0; i < template.Controls.Count; i++)
{
    var myControl = template.Controls[0];
    template.Controls.Remove(myControl);
    Controls.Add(myControl);
}

这个循环(第二个)实际上没有任何用处。 它每次只删除相同的控件,因为没有使用“i”。每次删除Controls [0],并将其重新添加到Controls。

希望它有所帮助。 如果它解决了你的问题,不要忘记投票。 谢谢.. :))