2010-07-17 23 views
0

Je suis tring pour écrire une fonction qui a besoin d'enregistrer un fichier (en csv) et a une condition. c'est quelque chose comme ça:Comment combiner une alerte popup dans save en tant que fonction de fichier dans asp.net?

Si le fichier est petit puis 1 Mo alors je veux afficher une alerte en javascript et ensuite continuer avec les commandes de sauvegarde sous forme de fichier.

Ce que je ne faisais que:

if(...) 
{ 
} 
else 
{ 
    ClientScript.RegisterStartupScriptBlock(...alert('aaa')...); 
} 
Response.ContentType = "text/csv"; 
Response.AppendHeader("Content-Disposition","attachment; filename=file.csv"); 
Response.TransmitFile("FILE.csv"); 
Response.End(); 

la sauvegarde fonctionne très bien comme. mais l'alerte ne s'affichera pas dans l'autre cas. J'ai essayé RegisterStartupScript. J'ai essayé plusieurs options. Mais il semble que le response.end empêche le client de se produire.

Je vous écris en C# asp.net (ajax permis site web, mais pas en cours d'utilisation), Visual Studio 2005.

Peut-on sait comment puis-je contourner cela? Comment puis-je le faire fonctionner?

merci, gadym.

Répondre

1

Le problème est que votre type de contenu est "text/csv" donc le serveur n'enverra jamais votre script de démarrage au navigateur. Même si c'est le cas, le navigateur traitera la réponse comme un fichier csv, pas comme html, et ainsi le script ne sera jamais exécuté.

La façon de le faire serait d'inclure une redirection dans votre script de démarrage, quelque chose comme ceci:

alert("aaa"); 
window.loocation.href = "http:\\url-to-return-csv"; 

L'URL pourrait pointer vers votre page existante avec un paramètre que vous dire juste retun le csv, ou vous pouvez écrire un gestionnaire http pour renvoyer le csv