2011-02-28 72 views
1

我有一个ASP.NET项目模板中的FileUpload控件的ASP.NET Repeater控件。 ASP.NET Repeater作为从ASP.NET Multiview创建的向导的一部分位于UpdatePanel中。我试图在单击提交时上传每个FileUpload控件中的每个文件,但是当我提交表单时,FileUpload控件不保留文件。下面是相关代码:如何上传ASP.NET Repeater项目中的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> 

foreach (RepeaterItem item in RepeaterImages.Items) 
    { 
     if (item.ItemType == ListItemType.Item 
      || item.ItemType == ListItemType.AlternatingItem) 
     { 
      FileUpload fupload = (FileUpload)item.FindControl("FileUpload"); 
      if (fupload.HasFile) 
      { 
       string path = Server.MapPath("~/images/"); 
       fupload.SaveAs(path); 

      } 
     } 
    } 

当我点击提交,我希望所有的文件上传与文件控制上传他们的文件。但是,如果我运行步调试器,它显示每个FileUpload控件没有文件。这似乎是一个回发问题,但我不是100%肯定的。

+0

嗨,您是否在UpdatePanel中使用中继器? – Deepak 2011-02-28 04:47:10

+0

我解决了这个问题,通过删除我的UpdatePanel,但如果可能的话,我想保留我的UpdatePanel,因为它提供了更流畅的导航。 – 2011-02-28 04:54:38

回答

2

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

的OnClientClick = “JavaScript的:document.forms [0] .encoding = '的multipart/form-data的';”

在将会上传所有图像的按钮。

这个问题的答案,我发现这个链接https://stackoverflow.com/a/217722

见下面我的代码:

在页面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> 

在代码隐藏

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; 
     } 
    } 
相关问题