2012-10-05 3 views
3

Quelqu'un peut-il me dire pourquoi j'obtiendrais l'erreur dans la trace ci-dessous?SetFocus/Cycle de page - Erreur de confusion

"SetFocus peut uniquement être appelé avant et pendant PreRender." Le message d'erreur indique que "SetFocus" doit être appelé avant ou pendant PreRender et en fonction de la trace, la page est loin de faire quoi que ce soit à faire avec PreRender pour le moment.

Alors pourquoi l'erreur?

Copié De Trace.axd ...

 
Begin PreInit 
End PreInit 
Begin Init 
End Init 
Begin InitComplete 
End InitComplete 
Begin LoadState 
End LoadState 
Begin ProcessPostData 
End ProcessPostData 
Begin PreLoad 
End PreLoad 
Begin Load 
End Load 
Begin ProcessPostData Second Try 
End ProcessPostData Second Try 
Begin Raise ChangedEvents 
End Raise ChangedEvents 
Begin Raise PostBackEvent 

SetFocus can only be called before and during PreRender. 
  at System.Web.UI.Page.SetFocus(Control control) 
  at System.Web.UI.Control.Focus() 
  at Graylink.Neptune.RecruiterPortal.UserControls.Popups.RecruiterPopups.ShowChangePasswordPopup(RecruiterClass recruiter, String commandName) in C:\Users\jens.uffhaus\SourceControl\Neptune\Source Code\RecruiterPortal\UserControls\Popups\RecruiterPopups.ascx.cs:line 1134 
  at Graylink.Neptune.RecruiterPortal.Default.Password_OnBeforeGo(MenuItem item, String queryString, Boolean forceRedirect) in C:\Users\jens.uffhaus\SourceControl\Neptune\Source Code\RecruiterPortal\Default.Master.cs:line 92 
  at Graylink.Neptune.RecruiterPortal.MenuItem.GoDelegate.Invoke(MenuItem item, String queryString, Boolean forceRedirect) 
  at Graylink.Neptune.RecruiterPortal.MenuItem.Go(String queryString, Boolean forceRedirect) in C:\Users\jens.uffhaus\SourceControl\Neptune\Source Code\RecruiterPortal\Menu\MenuItem.cs:line 129 
  at Graylink.Neptune.RecruiterPortal.MenuItem.Go() in C:\Users\jens.uffhaus\SourceControl\Neptune\Source Code\RecruiterPortal\Menu\MenuItem.cs:line 115 
  at Graylink.Neptune.RecruiterPortal.MainMenu.lnkMyAccountProfilePassword_Click(Object sender, EventArgs e) in C:\Users\jens.uffhaus\SourceControl\Neptune\Source Code\RecruiterPortal\UserControls\MainMenu.ascx.cs:line 130 
  at System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) 
  at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) 
  at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
  at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
  at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
  at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
+0

Peut-être provient-il d'une méthode asynchrone qui s'est produite après PreRender. – Jeremy

+0

J'ai des points d'arrêt sur les substitutions OnPreRender à tous les niveaux et aucun d'entre eux ne se déclenche avant que j'obtienne l'erreur. Merci pour la suggestion tho. – Jens

+0

Je crois que le rendu n'est pas appelé lors d'une requête asynchrone. – Jeremy

Répondre

2

appel SetFocus() sur une page qui est réaffecté à et qui se traduit par une redirection vers une autre page provoquera cette erreur. Essayez d'appeler Focus/SetFocus si! Page.IsPostBack et vous trouverez l'erreur ne se produira plus.