2009-11-30 6 views
3

J'ai un formulaire .aspx dans lequel j'ai un sujet de liste déroulante que je reprends d'une table DB.asp.net: response.redirect ne fonctionne pas

Un bouton de soumission en cliquant sur les questions liées à ce sujet sont affichées dans une grille.

Je le fais en appelant la fonction FillGrid() dans l'événement de clic de bouton.

J'ai aussi pageindexchanging pour ma gridview dans lequel FillGrid() est à nouveau appelé.

Dans ma fonction FillGrid(), j'ai utilisé un bloc try catch. Si une erreur se produit, je veux rediriger la page vers la page d'erreur en utilisant Response.Redirect(). Le problème est cette réponse. Redirect ne fonctionne pas. Une des raisons en est que sur un bouton, le formulaire est posté deux fois. Car après avoir atteint le flux d'instructions response.redirect, vous revenez au clic sur le bouton où FillGrid est appelé().

Comment puis-je résoudre ce problème? Ou, pour simplifier, comment puis-je empêcher le double affichage du formulaire?

+0

Est-ce déclenché par un contrôle dans un UpdatePanel? –

+0

non je n'utilise pas Updatepanel ... – anay

Répondre

0

Essayez ceci:

Response.Redirect("url"); 
Response.End; 
+0

C'est le comportement par défaut de Response.Redirect. –

+1

Response.Redirect ("url", true) dit la même chose. – Marc

0

Je crois que le comportement que vous voyez est correct. Un response.redirect est effectué via le navigateur. Ainsi, lorsque vous obtenez une erreur, la page est publiée dans le navigateur et le navigateur déclenche la redirection. La redirection déclenche à nouveau le chargement de la page (c'est le flux standard dans ASP.NET).

Bien que vous puissiez utiliser Server.Transfer pour contourner ce problème, je vous recommande d'utiliser la redirection d'erreur intégrée à ASP.NET. Voir this page pour plus d'informations sur ce qui est disponible et comment les utiliser.

5

Par exemple, vous devez lier index.aspx. Vous écrivez ceci:

Response.Redirect("index.aspx", true); 

Mais Response.redirect ne fonctionne pas. Maintenant, allez à l'affichage de conception sélectionnez le bouton que vous souhaitez définir Response.redirect et appuyez sur F4 qui ouvriront les propriétés du bouton, alors vous devez trouver l'option PostBackUrl, puis recherchez votre URL que vous voulez.

Voir cette image:

1

J'ai rencontré exactement le même problème. La redirection ne fonctionnait pas à cause de la page de contenu page principale a des erreurs. Ce est un exemple de code:

FormsAuthentication.SetAuthCookie(loginUserDetail.UserName, false); 
Response.Redirect(FormsAuthentication.DefaultUrl, false); 

valeur FormsAuthentication.DefaultUrl est "/membersarea/wellcome.aspx" et wellcome.aspx a une page maître nommé, Site.master.

Site.master avait des erreurs javascript, donc la commande Response.Redirect ne fonctionnait pas.

2

Eh bien, faites ceci ...

Response.Redirect("~/err.aspx", false); 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

Maintenant, la page originale ne sera pas affiché au navigateur et vous serez redirigé vers la nouvelle page .. Le problème avec Response.Redirect("~/err.aspx", true); est qu'une exception est formée de cette façon, ce qui peut envoyer le contrôle au bloc catch ..

• Une autre façon est bien sûr Server.Transfer() mais je ne pense pas que vous vouliez cela.

Questions connexes