2012-10-05 71 views
3

誰能告訴我爲什麼我會在下面的跟蹤中得到錯誤?SetFocus/Page Cycle - 混淆錯誤

「SetFocus只能在PreRender之前和期間調用。」

錯誤消息表示必須在PreRender之前或期間調用「SetFocus」,並基於該跟蹤頁面與PreRender無關。

那麼爲什麼錯誤呢?

複製了的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

也許它起源於PreRender之後發生的異步方法。 – Jeremy

+0

我在OnPreRender覆蓋每個級別的斷點,並沒有其中之一發生錯誤之前觸發。感謝您的建議。 – Jens

+0

我相信渲染在異步請求期間不會被調用。 – Jeremy

回答

2

正在被調回並導致重定向到另一個頁面將導致此錯誤的頁面上調用SetFocus的()。如果!Page.IsPostBack,只嘗試調用Focus/SetFocus,你會發現錯誤不再發生。