[asp.net] forcer téléchargement dans un updatePanel
Bonjour,
J'ai un repeater qui contient des LinkButton dont l'objectif est de permettre le téléchargement d'un fichier.
Ce repeater est contenu dans un composant similaire à un UpdatePanel.
J'ai une méthode qui s'execute lorsque l'utilisateur clique sur le bouton. Problème: j'ai une exception qui se lève dans ma méthode qui permet de forcer le téléchargement.
Citation:
Unable to evaluate expression because the code is optimized
Voici le code que j'ai pour alimenter mon repeater:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
this.fileRepeater.DataSource = listFiles;
// -- Gestion du postback sur les liens de téléchargement
// ---------------------------------------------------------
for (int i = 0; i < fileRepeater.Items.Count; i++)
{
LinkButton linkButton = (LinkButton)fileRepeater.Items[i].FindControl("linkButton");
linkButton.CommandArgument = listFiles[i].SName;
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(linkButton);
} |
Et voici le code qui s'exécute lorsque l'utilisateur clique sur le bouton:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
private void forceDownload(string sFileName)
{
string sType = "";
FileInfo fi = null;
try
{
// -- Récupération du fichier
// --------------------------
fi = new System.IO.FileInfo(sFileName);
switch (fi.Extension.ToLower())
{
case ".htm":
case ".html":
sType = "text/HTML";
break;
case ".txt":
sType = "text/plain";
break;
case ".pdf":
sType = "Application/pdf";
break;
case ".xls":
sType = "Application/vnd.ms-excel";
break;
case ".doc":
case ".rtf":
sType = "Application/ms-word";
break;
}
Response.AppendHeader("content-disposition",
"attachment; filename=" + fi.Name);
if (sType != "")
Response.ContentType = sType;
Response.BufferOutput = true;
Response.WriteFile(sFileName);
Response.End();
}
catch (Exception ex)
{
throw new Exception("ThemeResultTreenode.forceDownload: " + ex.Message);
} |
Si quelqu'un a une idée du pourquoi du comment ... Et surtout une solution, je la veux bien !
Merci.