2009-05-28 6 views
0

J'ai une page sur mon site sur laquelle les utilisateurs doivent remplir les détails avant de pouvoir télécharger un document. La section des détails de l'utilisateur est sur la première vue dans un contrôle MultiView. Après avoir rempli leurs détails, je voudrais que l'utilisateur clique sur un bouton qui leur montrera une demande de téléchargement de fichier (je l'ai fait avec succès avec un gestionnaire ashx) puis les rediriger vers la deuxième page de vue de le MultiView qui va dire "merci de télécharger" ou quelque chose comme ça.asp.net faire le bouton afficher la vue différente de MultiView ET télécharger un fichier

J'ai essayé l'habituel Response.Redirect("~/DownloadHandler.ashx"); dans le gestionnaire d'événements de clic de bouton, mais évidemment, cela empêche la page de terminer la publication et d'afficher la dernière page du MultiView.

Y at-il un moyen de contourner cela, ou devrais-je simplement changer mon interface utilisateur pour répondre à cela?

EDIT: J'ai conclu qu'il est préférable de simplement fournir un lien hypertexte vers le document (sur ma page de confirmation, et modifier le libellé en conséquence) car cela offre une expérience utilisateur cohérente indépendant du navigateur qu'ils sont en utilisant.

Répondre

1

Allez-y et prenez-les à la deuxième vue du MultiView. Ajouter une méthode javascript qui télécharger le document, et déclencher de votre codebehind.1 Par exemple,

Dans votre page:

<script> 
function downloadFile(url) { 
window.location = url; 
//you could also try window.open(url, 'Download') 
} 
</script> 

Dans votre code derrière:

script = string.Format("downloadFile('{0}');", "DownloadHandler.ashx"); 
Page.ClientScriptManager.RegisterStartupScript(typeof(Page), "download", script, true); 

Vous pouvez également ajoutez un délai (en utilisant setTimeout) avant que le fichier ne soit téléchargé.

Plus d'info: Initiating a file download that works well, even in IE?

Questions connexes