【发布时间】:2015-05-22 23:22:52
【问题描述】:
我知道有很多关于同一主题的问题,但我还没有看到一个可以解决我的问题的问题。所以我有一个UpdatePanel 在它的ContentTemplate 我有一个ListView 和一个Panel,里面有一个FileUpload,一个取消按钮和一个上传按钮。当上传按钮被按下时,它会在服务器端调用一个方法来处理文件上传业务。我的问题是 HttpFileCollection 对象是空的,即使我确实选择了一些东西。
这是我正在做的一个例子。按照公司的政策,我不能发布原始程序,但这应该足够了,因为它是上传时唯一运行的东西。
客户端:
<asp:UpdatePanel ID="upMain" runat="server">
<ContentTemplate>
<asp:ListView>
<asp:Panel ID="pnlFileUpload" runat="server" CssClass ="custom-menu">
<asp:FileUpload ID="fuUpload" runat="server" AllowMultiple="true" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="OnUploadFile" />
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
</asp:Panel>
<asp:ModalPopupExtender ID="mpeUpload" runat="server" TargetControlID ="imgBtnUploadFile" PopupControlID="pnlFileUpload" CancelControlID="btnCancel"
BackgroundCssClass="modalBackgroud">
<Animations>
<OnShown>
<%--The FadeIn and Display animation.--%>
<FadeIn Duration="0.25" MinimumOpacity="0" MaximumOpacity="1" />
</OnShown>
</Animations>
</asp:ModalPopupExtender>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
服务器端:
protected void OnUploadFile(object sender, EventArgs e)
{
HttpFileCollection files = Request.Files;
}
我在files 上有一个断点,当它命中时,keys 为 0,content 为空,InputStream 也为空。我已经尝试了一些不同的方法,从将页面的enctype ="multipart/form-data" 设置为许多其他我不记得的东西,现在。
仍然掌握 asp 的窍门,因此任何带有解释的建议,将不胜感激。
【问题讨论】:
-
尝试将它放在
UpdatePanel之外,有时UpdatePanel会在您不知道通过Ajax 的情况下执行Post。然后,那里的文件消失了,因为虽然它显示了文件,但是当您执行Post时,控件不知道该文件。 -
@Greg,这是有道理的。我会尝试一下。
标签: c# asp.net file-upload