上传失败一次,然后就可以正常工作了

Sop*_*hia 5 .net asp.net ajax updatepanel file-upload

我正在开发 ASP.Net 自定义控件。在我的控件中,我有一个 FileUpload 控件,位于 MultiView 内,位于 AJAX UpdatePanel 内。

我已将提交按钮添加到更新面板的回发触发器中。(这是让 FileUpload 在 UpdatePanel 中工作的标准修复)。

第一次提交时,FileUpload 不会上传任何内容(即控件的 FileBytes 属性的长度为零)。表单上的其他所有内容均已正确提交。

在第二次及后续提交时,上传工作正常。

什么可能导致此问题以及如何解决?


例如:

<asp:UpdatePanel runat="server" ID="update_panel" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:MultiView runat="server" ID="mvMultiView" ActiveViewIndex="0">
            <asp:View runat="server" ID="viewOne">
                <!-- content -->
            </asp:View>
            <asp:View runat="server" ID="viewTwo">
                <!-- some other form elements -->
                <asp:FileUpload ID="file_upload" runat="server" />
                <asp:Button ID="save_button" runat="server" Text="Save" OnClick="save_Click" ValidationGroup="group" />
            </asp:View>
         </asp:MultiView>
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="save_button" />
    </Triggers>
</ajax:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

Sop*_*hia 3

事实证明,这是由部分页面更新期间呈现的 FileUpload 控件引起的。为了正确提交,需要使用完整回发来呈现提交FileUpload 控件。由于第一次表单提交导致了完整的回发,因此第二次上传开始按预期进行。

解决方案: 将显示和提交文件上传控件的两个按钮添加到更新面板回发触发器。

例如:

   <Triggers>
      <asp:PostBackTrigger ControlID="btnShowUploadForm" />
      <asp:PostBackTrigger ControlID="btnUpload" />
   </Triggers>                            
Run Code Online (Sandbox Code Playgroud)