我正在网页上使用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 : " />  
<asp:FileUpload ID="uplUploadFile" runat="server" />
<br />
<br />
<asp:Button ID="btnUpload" runat="server" text="Upload" SkinID="ConfirmButton" />  
<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。这是我在这里发表的第一篇文章,请告诉我是否需要更多信息。感谢。
答案 0 :(得分:1)
您无法在FileUpload控件中保留/分配值。这是因为浏览器安全原因。只有在第一次提交到服务器时才可以提交文件。您无法保留或为其分配值。
在UpdatePanel中也会发生同样的事情。 Ajax帖子提交将异步发生,因此浏览器不会保留该文件。阅读this
解决方案是将fileUpload 保留在UpdatePanel外面。
答案 1 :(得分:0)
你无法在更新面板中使用asp:fileupload,这是asp文件上传中的一个问题, 所以从更新面板中取出它会完美地运行