ASP文件上载控件在以前隐藏的面板中不起作用

时间:2013-08-05 13:46:08

标签: asp.net

我正在网页上使用ASP文件上传控件,我希望它隐藏到用户想要上传文件,因此默认情况下更新面板的visible属性为false。单击提示文件上载的按钮时,上载控件显示,并且可以选择文件,但单击上载按钮时,错误显示上载控件的PostedFile属性显示“对象引用未设置为实例对象“,即使文件路径在conrrol中可见。如果从不隐藏上传控件,则此方法有效。这是来源:

<asp:UpdatePanel ID="updUploadTestDoc" runat="server" Visible="false">
    <ContentTemplate>
        <asp:Panel ID="pnlUploadTestDoc" runat="server" GroupingText="Upload Test 

Document">
                <asp:Label ID="Label3" runat="server" SkinID="FieldLabel" Text="Select File to Upload : " />&nbsp;&nbsp
                <asp:FileUpload ID="uplUploadFile" runat="server" />
                <br />
                <br />
                <asp:Button ID="btnUpload" runat="server" text="Upload" SkinID="ConfirmButton"  />&nbsp;&nbsp
                <asp:Button ID="btnCancelUpload" runat="server" Text="Cancel" SkinID="CancelButton"  />
            </asp:Panel>
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnUpload" />
        </Triggers>
    </asp:UpdatePanel>

我已经尝试隐藏/显示updUploadTestDoc,pnlUploadTestDoc和上传控件本身,都具有相同的结果。发生错误的VB代码是: strAttachmentPath = pUploadControl.PostedFile.FileName

我正在使用VS 2010,框架4.0。这是我在这里发表的第一篇文章,请告诉我是否需要更多信息。感谢。

2 个答案:

答案 0 :(得分:1)

您无法在FileUpload控件中保留/分配值。这是因为浏览器安全原因。只有在第一次提交到服务器时才可以提交文件。您无法保留或为其分配值。

在UpdatePanel中也会发生同样的事情。 Ajax帖子提交将异步发生,因此浏览器不会保留该文件。阅读this

解决方案是将fileUpload 保留在UpdatePanel外面

答案 1 :(得分:0)

你无法在更新面板中使用asp:fileupload,这是asp文件上传中的一个问题, 所以从更新面板中取出它会完美地运行