Redirection vers une autre page après l'Intervention.Fin() a été appelé en C#
Je suis de l'exportation d'un gridview à excel, à l'aide .Net 4.0 dans une application web, sur la page de la charge et de la nécessité pour le fichier doit être généré et ensuite la page pour être redirigé vers la page appelante. Je suis en cours d'exécution dans des questions parce que mon code pour exporter vers excel est comme suit:
gvSummary.Style.Add("font-size", ".6em");
Response.Clear();
string attachment = "attachment; filename=filename.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gvSummary.GridLines = GridLines.Horizontal;
gvSummary.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
Je sais que si j'ai mis la Réponse.Redirect() avant de l' .End(), je vais obtenir redirigé, mais le fichier n'est jamais généré, et si je mets la Réponse.Redirect() après la .Fin (), j'ai le fichier mais pas de redirection.
Le code ci-dessus fonctionne très bien dans la génération du fichier, mais quand une fois le fichier généré, je suis toujours bloqué en voyant mon Chargement de l'animation parce que je ne peux pas sortir de la page. Des idées?
OriginalL'auteur EvanGWatkins | 2010-09-09
Vous devez vous connecter pour publier un commentaire.
Je suggère d'ajouter une redirection en-tête. Quelque chose comme ceci:
Où 3 est le temps de retard et index.html est url que vous avez besoin de rediriger à
Je pense que oui. parce que d'abord, HTTP est utilisé pour fournir de réponse. Dans ce cas, HTTP paquet ressemble à un jeu d'en-têtes suivie par des données binaires (fichier xls). Dans certains cas, adiitionaly il sera nécessaire de définir contnt type application/octet-stream, mais cela dépend de quel type de résultat ne nous en avons besoin
Il n'a pas de travail, il serait de charger le fichier, mais pas de redirection...
hmm.. Essayez d'Actualisation de jeu de l'en-tête directement après l'Intervention.ClearContent() donc, il doit être le premier en-tête pour définir
Je pense que le problème est dans le flux que vous utilisez, voir ma réponse.
OriginalL'auteur ILya
Le problème est la Réponse.Fin() envoyer les derniers morceaux de la page au client afin de compléter la demande. Dans votre cas, la demande contient le fichier.
Une solution possible consiste à ouvrir une nouvelle page pour le télécharger et de garder la redirection de la page en cours.
OriginalL'auteur Johann Blais
Vous ne pouvez pas faire à la fois ouvert, vous pouvez donc essayer de définir le lien généré de fichier xls dans une nouvelle fenêtre ou comme source d'une iframe
OriginalL'auteur Fredrik Leijon
En JavaScript:
bouton:
OriginalL'auteur Lady Gonzales
J'ai essayé d'ouvrir une page séparée par ScriptManager qui va télécharger mon fichier alors que la redirection dans ma page d'origine.
Donc j'ai ajouté le code suivant dans ma page principale:
Et ensuite ajouté au code de téléchargement dans la méthode Page_Load de mon CommonDownload page. J'ai passé certains des infos dont j'avais besoin dans le CommonDownload page via la session.
OriginalL'auteur Manju M
J'ai ajouté le
target="_blank"
pour le lien qui m'emmène à la page. Alors, quand il s'ouvre dans une nouvelle fenêtre, envoyer la feuille excel ot le navigateur, et ferme la page car il n'a rien d'autre à faire après laResponse.End();
Espère que cette aide. A travaillé pour moi.
OriginalL'auteur ransems