复合控件在我需要使用其中一个属性(控件生命周期)之后呈现



我为文件上传输入创建了一个复合控件(使用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

它开始按预期工作。

最新更新