I checked my browser isn't blocking any popups but I seem to have a error in my code which I can't seem to figure out whats the problem
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();
}
}
I also tried a version where the size was included but that didn't work either, its like a silent discard, does anyone maybe see my error in my code ?
Here is my Asp.net Code (this works)
<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>
An educated guess: this happens inside an update panel, doesn't it?
This happened to me once, the reason that no error/exception is thrown is that nothing actually is wrong in the back end. Your file data goes back to the front-end, which rejects it to render the content of the update panel.
If that's your case, you have to put the control who fires the postback (i.e. btnDownload
)as a sync trigger of the update panel:
<Triggers>
<asp:PostBackTrigger ControlID="gdvSongs" />
</Triggers>