2011-02-28 76 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; 
     } 
    } 
相關問題