我有一个ASP.NET webform,我用这个
初始化一个带有控件列表的数组FileUpload[4] = new FileUpload[4];
public myclass()
{
fileUpload[0] = FileUpload1;
fileUpload[0] = FileUpload2;
...etc
}
然后我在页面加载中使用它们,它们都是空的。这对我来说似乎是一种奇怪的行为。有人可以详细说明吗?我可以理解它们在构造函数中是null,但是为什么在页面加载时使用它们是null。
答案 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()
};
}
}