0

我在网页上使用 ASP 文件上传控件,我希望它隐藏,直到用户想要上传文件,所以更新面板的可见属性默认为 false。点击提示上传文件的按钮时,显示上传控件,可以选择文件,但是点击上传按钮时,报错:上传控件的PostedFile属性显示“Object reference not set to an instance对象”,即使文件路径在控制中可见。如果从不隐藏上传控件,则此方法有效。这是来源:

<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。这是我在这里的第一篇文章,所以如果需要更多信息,请告诉我。谢谢。

4

2 回答 2

1

您不能在 FileUpload 控件中保留/分配值。这是由于浏览器安全原因。文件提交只能在第一次提交到服务器时进行。您不能保留或为其分配值。

在 UpdatePanel 中也会发生同样的事情。Ajax post 提交将异步发生,因此浏览器不会保留文件。读这个

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

于 2013-08-05T14:11:29.383 回答
0

你不能在更新面板中使用 asp:fileupload,这在 asp 文件上传中有点问题,所以把它从更新面板中拿出来,它会很好地工作

于 2013-08-05T13:49:49.537 回答