2014-03-24 43 views
0

我檢查了我的瀏覽器不阻止任何彈出窗口來下載文件,但我似乎已經在我的代碼錯誤,我似乎無法找出什麼問題問題試圖在使用更新面板

protected void btnDownload_Click(object sender, EventArgs e) 
    { 
     var context = new HMangInternationalContext("HMangInternational"); 
     var id = Convert.ToInt32((sender as Button).CommandArgument); 
     var song = context.AlbumEntries.Where(x => x.ID == id).FirstOrDefault(); 
     if (song != null) 
     { 
      Response.Clear(); 
      Response.AddHeader("Content-type", "application/octet-stream"); 
      Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(song.FileName)); 
      Response.BinaryWrite(song.Data); 
      Response.End(); 
      udpFiles.Update(); 
     } 
    } 

我也試過一個版本,其中包含的大小,但也沒有工作,它就像一個無聲的丟棄,有沒有人可能看到我的代碼中的錯誤?

這是我的Asp.net代碼(這工作)

<asp:UpdatePanel runat="server" ID="udpFiles"> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="gdvSongs" /> 
    </Triggers> 
    <ContentTemplate> 
     <h1 class="hmang-page-header">TRACKS<asp:Button runat="server" Text="Add New Track" OnClientClick="Show();" ID="btnAdd" Visible="false" class="btn btn-primary set-right"></asp:Button></h1> 
     <asp:GridView ID="gdvSongs" runat="server" AutoGenerateColumns="false" CssClass="table table-dark table-condensed table-bordered"> 
      <Columns> 
       <asp:TemplateField> 
        <HeaderTemplate> 
         Track Name 
        </HeaderTemplate> 
        <ItemTemplate> 
         <%# Eval("Name") %> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField> 
        <HeaderTemplate> 
         File 
        </HeaderTemplate> 
        <ItemTemplate> 
         <%# Eval("FileName") %> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:Button Text="Download" runat="server" CssClass="btn btn-primary" ID="btnDownload" CommandArgument='<%# Eval("ID") %>' OnClick="btnDownload_Click" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

回答

1

一個猜測:這種情況發生的更新面板內部,不是嗎?

這發生在我身上一次,沒有錯誤/異常拋出的原因是後端沒有任何實際的錯誤。您的文件數據會返回到前端,拒絕該數據以呈現更新面板的內容。

如果這是你的情況,你必須把誰觸發回發(即btnDownload)作爲更新面板的同步觸發控制:

<Triggers> 
     <asp:PostBackTrigger ControlID="gdvSongs" /> 
</Triggers> 
+2

你喜歡砍看到什麼我的網頁上或做你有更新面板中的類似問題,它是更新面板 –

+0

@DonaldJansen沒有黑客攻擊,只是在那裏,做到了:) –