如何在ASP.NET Repeater项目中上载FileUpload控件中的所有文件?

如何在ASP.NET Repeater项目中上载FileUpload控件中的所有文件?,asp.net,file-upload,postback,repeater,Asp.net,File Upload,Postback,Repeater,我有一个ASP.NET Repeater控件,它的项模板中有一个FileUpload控件。ASP.NET Repeater位于UpdatePanel内,作为从ASP.NET多视图生成的向导的一部分。我试图在单击提交时上载每个FileUpload控件中的每个文件,但在提交表单时FileUpload控件不会保留文件。以下是相关代码: <asp:Repeater ID="RepeaterImages" runat="server" OnItemCommand="RepeaterBoxArts_I

我有一个ASP.NET Repeater控件,它的项模板中有一个FileUpload控件。ASP.NET Repeater位于UpdatePanel内,作为从ASP.NET多视图生成的向导的一部分。我试图在单击提交时上载每个FileUpload控件中的每个文件,但在提交表单时FileUpload控件不会保留文件。以下是相关代码:

<asp:Repeater ID="RepeaterImages" runat="server" OnItemCommand="RepeaterBoxArts_ItemCommand">
  <ItemTemplate>
    <tr>
       <td class="right">
          Choose File:
       </td>
       <td>
           <asp:FileUpload ID="FileUpload" runat="server" />
       </td>
    </tr>
  </ItemTemplate>

单击“提交”时,我希望所有带有文件的FileUpload控件都可以上载其文件。但是,如果我运行step调试器,它会将每个FileUpload控件显示为没有文件。这似乎是回发的问题,但我不是100%确定。

我遇到了同样的问题,并解决了添加此代码的问题

OnClientClick=“javascript:document.forms[0]。编码='multipart/form data';”

在将上载所有图像的按钮上

这个问题的答案,我在这个链接上找到了

请参见下面的我的代码:

在页面ASPX中

<asp:Repeater ID="rptUpload" runat="server" OnItemDataBound="rptUpload_ItemDataBound">
                            <HeaderTemplate>
                                <table width="100%">
                            </HeaderTemplate>
                            <ItemTemplate>
                                <tr>
                                    <td>
                                        <asp:FileUpload ID="fu" runat="server" />
                                    </td>
                                </tr>
                            </ItemTemplate>
                            <FooterTemplate>
                                </table>
                            </FooterTemplate>
                        </asp:Repeater>

                        <p>
                            <asp:ImageButton ID="btnUpload" runat="server" OnClick="btnUpload" ImageUrl="img/icon_upload.png" OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';" />
                        </p>

您好,您是否在Updatepanel中使用repeater?我已通过删除我的Updatepanel解决了此问题,但如果可能,我希望保留我的Updatepanel,因为它提供了更平滑的导航。
<asp:Repeater ID="rptUpload" runat="server" OnItemDataBound="rptUpload_ItemDataBound">
                            <HeaderTemplate>
                                <table width="100%">
                            </HeaderTemplate>
                            <ItemTemplate>
                                <tr>
                                    <td>
                                        <asp:FileUpload ID="fu" runat="server" />
                                    </td>
                                </tr>
                            </ItemTemplate>
                            <FooterTemplate>
                                </table>
                            </FooterTemplate>
                        </asp:Repeater>

                        <p>
                            <asp:ImageButton ID="btnUpload" runat="server" OnClick="btnUpload" ImageUrl="img/icon_upload.png" OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';" />
                        </p>
protected void btnUpload_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            foreach (RepeaterItem item in rptUpload.Items)
            {
                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                {
                    FileUpload fu = (FileUpload)item.FindControl("fu");
                    if (fu.HasFile)
                    {
                        string path = Server.MapPath("~/images/");
                        string fileName = Path.GetFileName(fu.FileName);
                        string fileExt = Path.GetExtension(fu.FileName).ToLower();
                        fu.SaveAs(path + fileName + fileExt);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }