我为文件上传输入创建了一个复合控件(使用HtmlInputFile控件)。我的问题a是,在我尝试在页面代码后面使用HtmlInputFile的"SaveAs"保存文件之前,一切都很好。每当我按下上传文件的按钮时,我都会得到一个"对象未设置为实例blablabla"。但是,如果我在SaveAs之前暂停执行(有一个断点),然后一步一步地执行(F10),所有的复合属性都有相应的数据,我可以有效地上传文件。
我确信这与页面和控件的生命周期有关,但到目前为止我所读到的一切都没有让我走到哪里。有人能告诉我如何在执行Click事件背后的代码之前强制加载/呈现复合控件吗?
触发SaveAs的代码非常直接:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
fup.xmsPostedFile.SaveAs(Server.MapPath(String.Format("~/memberpages/{0}", fup.xmsFileName)))
End Sub
fup.xmsPostedFile
属性仅引用_inputControl.PostedFile
属性。与fup.xmsFileName
相同。
任何帮助都将不胜感激。提前感谢。
终于开始工作了。原来我错过了EnsureChildControls()。我为此更改了属性:
Public ReadOnly Property xmsPostedFile() As HttpPostedFile
Get
Return _inputFile.PostedFile
End Get
End Property
到这个
Public ReadOnly Property xmsPostedFile() As HttpPostedFile
Get
EnsureChildControls()
Return _inputFile.PostedFile
End Get
End Property
它开始按预期工作。