webform中的构造函数?

时间:2010-06-28 15:37:42

标签: asp.net webforms

我有一个ASP.NET webform,我用这个

初始化一个带有控件列表的数组
FileUpload[4] = new FileUpload[4];
public myclass()
{
 fileUpload[0] = FileUpload1;
 fileUpload[0] = FileUpload2;
...etc
}

然后我在页面加载中使用它们,它们都是空的。这对我来说似乎是一种奇怪的行为。有人可以详细说明吗?我可以理解它们在构造函数中是null,但是为什么在页面加载时使用它们是null。

2 个答案:

答案 0 :(得分:1)

它们为空,因为尚未创建控件。

查看ASP.NET Page Life Cycle Overview和Init事件。

答案 1 :(得分:0)

如果要“手动”添加控件,则需要在OnInit()中执行此操作,以便可以在OnInit()之后的LoadViewState()调用中为它们提供状态。

如果您不知道需要添加多少个控件,因为它以某种方式动态,您可以覆盖LoadViewState和SaveViewState。请参阅此示例(不使用Visual Studio编写):

public class MyPage : Page 
{
    class State
    {
        numberOfControls int
        otherState object
    }

    override void LoadViewState(savedState object)
    {
        var myState = (State)savedState;
        SetupMyControls(myState.numberOfControls);
        base.LoadViewState(myState.otherState);
    }

    override object SaveViewState()
    {
        return new State 
        {
            numberOfControls = GetNumberOfMyControls(),
            otherState = base.SaveViewState()
        };
    }
}