复合控件渲染后我需要使用其中一个属性(控件生命周期)

时间:2014-10-23 19:09:07

标签: asp.net controls composite composite-controls

我为文件上传输入创建了一个复合控件(使用HtmlInputFile控件)。我的问题是,一切正常,直到我尝试使用HtmlInputFile" SaveAs"保存文件。在我的页面代码背后。每当我按下按钮上传文件时,我都会得到一个"对象没有设置为bla bla bla"。但是,如果我在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相同。

任何帮助将不胜感激。谢谢你提前。

1 个答案:

答案 0 :(得分:0)

终于开始工作了。结果我错过了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

它开始按预期工作。