我知道有很多关于同一主题的问题,但我还没有看到解决我的问题的问题。所以我有一个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,所以任何有关解释的建议都会非常感激。
答案 0 :(得分:1)
您的错误很可能是由于UpdatePanel
造成的。控制的前提是美妙的,可悲的是执行是可怕的。它通常会导致您的页面状态出现问题。它在UpdatePanel
实际工作方式中这样做。
控件将获取您的页面副本,将其存储在内存中,然后它将重新加载您的页面。这将阻碍您的性能,但副作用是当页面重新加载时,它将通过 Asp.Net页面生命周期。如果你不小心,这会产生一系列问题。
我会做的是将您的FileUpload
和Upload Button
移出小组,验证其是否正确上传。确认后,您知道 UpdatePanel 是罪魁祸首。然后你可以在约束内工作,或者我会做手动Ajax请求。
希望您的解释更加详细。
答案 1 :(得分:1)
来自MSDN:
以下ASP.NET控件与部分页面不兼容 更新,因此不适用于 UpdatePanel 控制:
...
FileUpload 和HtmlInputFile控制用于上传的时间 文件作为异步回发的一部分 ...
在 UpdatePanel 中使用 FileUpload 或HtmlInputFile控件 控制,设置提交文件的回发控件 面板的 PostBackTrigger 控件。 FileUpload 和 HtmlInputFile控件只能在回发场景中使用。