2010-06-28 5 views
3

У меня есть веб-формы ASP.NET, где я инициализировать массив со списком элементов управления на странице, как этотКонструктор в веб-форме?

FileUpload[4] = new FileUpload[4]; 
public myclass() 
{ 
fileUpload[0] = FileUpload1; 
fileUpload[0] = FileUpload2; 
...etc 
} 

то я использую их в нагрузке страницы и все они нуль. Мне это кажется странным поведением. Может кто-то уточнить и объяснить? Я могу понять, что они имеют значение null в конструкторе, но почему они должны быть пустыми при использовании в загрузке страницы.

ответ

1

Они ноль, потому что элементы управления еще не созданы.

Взгляните на ASP.NET Page Life Cycle Overview и событие Init.

+0

Да .. Я знал это, но не должен, если он указывает на них загрузкой страницы, они должны быть инициализированы? Это то, что меня смущает. –

+0

Да, они будут инициализированы, но ваш массив все равно будет содержать старые ссылки (nulls). – laktak

0

Если вы хотите добавить элементы управления «вручную», вам нужно сделать это в OnInit(), чтобы им можно было предоставить состояние из вызова LoadViewState(), которое произойдет сразу после OnInit().

Если вы не знаете, сколько элементов управления вам нужно добавить, так как это динамично, вы можете переопределить 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() 
     }; 
    } 
} 
Смежные вопросы