Page Life Cycle During File Upload
- 3 minutes to read
When a file is being uploaded by ASPxUploadControl on the server side, the ASP.NET page life cycle is changed. After a file is uploaded and file upload events (FileUploadComplete and FilesUploadComplete) are raised, the request is aborted and only the Unload
event is raised (see the diagram below).
Since file upload can be performed on two different control events (based on the FileUploadMode property value), there are two alternative page life cycles during file upload (illustrated in gold and green in the diagram below).
In the image above, the blue line illustrates a standard page life cycle. The gold and green lines illustrate the page life cycles during file upload.
- When the FileUploadMode property is set to
BeforePageLoad
(the green line), file upload is performed on the control’sInit
event, which is called before thePage_Init
event. Note that at this time, other controls on the page are not completely initialized, and are not available in file upload events. After file upload is complete, the request is aborted and theUnload
event is called. - When the FileUploadMode property is set to
OnPageLoad
(the gold line), the file upload is performed on the control’sLoad
event, which is called after thePage_Load
event. After file upload is complete, the request is aborted and theUnload
event is called.
Creating ASPxUploadControl at Runtime
When ASPxUploadControl is created dynamically at runtime, its events are not initially synchronized with those of other controls on the page. For more information, see the following section: Catch-up Events for Added Controls. Therefore, when file upload is performed on the Init
event, it can cause code skipping.
Example
In this example, ASPxUploadControl is created in the Page_Load
event handler. The control is partially initialized before it is added to the page hierarchy. After the control is added, it raises the Init
event. Since the FileUploadMode property is set to BeforePageLoad
(the default setting), file upload is performed on the Init
event. After the upload is performed, the request execution is aborted and the following code is not executed on file upload.
protected void Page_Load(object sender, EventArgs e) {
ASPxUploadControl uploadControl = new ASPxUploadControl();
uploadControl.ID = "MyUploadControl";
uploadControl.ShowUploadButton = true;
form1.Controls.Add(uploadControl);
//The code below is not executed during file upload
uploadControl.FileUploadComplete += uploadControl_FileUploadComplete;
ASPxButton btn = new ASPxButton();
form1.Controls.Add(btn);
btn.Text = "Click me";
btn.Click += ASPxButton1_Click;
}
Set the FileUploadMode property to OnPageLoad
to prevent the code from skipping during file upload. In this case, file upload is performed on the control’s Load
event, after the Page_Load
event handler has been fully processed.
protected void Page_Load(object sender, EventArgs e) {
ASPxUploadControl uploadControl = new ASPxUploadControl();
uploadControl.ID = "MyUploadControl";
uploadControl.ShowUploadButton = true;
uploadControl.FileUploadMode = UploadControlFileUploadMode.OnPageLoad;
form1.Controls.Add(uploadControl);
uploadControl.FileUploadComplete += uploadControl_FileUploadComplete;
ASPxButton btn = new ASPxButton();
form1.Controls.Add(btn);
btn.Text = "Click me";
btn.Click += ASPxButton1_Click;
}