【问题标题】:SetFocus can only be called before and during PreRenderSetFocus 只能在 PreRender 之前和期间调用
【发布时间】:2012-09-26 20:31:03
【问题描述】:

谁能告诉我为什么我会在下面的跟踪中得到错误?

“SetFocus 只能在 PreRender 之前和期间调用。”

错误消息指出,必须在 PreRender 之前或期间调用“SetFocus”,并且根据跟踪,页面与 PreRender 几乎没有任何关系。

那么为什么会出错呢?

从 Trace.axd 复制...

开始预初始化 结束预初始化 开始初始化 结束初始化 开始初始化完成 结束初始化完成 开始加载状态 结束加载状态 开始处理PostData 结束进程PostData 开始预加载 结束预加载 开始加载 最终负载 开始 ProcessPostData 第二次尝试 结束 ProcessPostData 第二次尝试 开始引发 ChangedEvents End Raise ChangedEvents 开始提高 PostBackEvent SetFocus 只能在 PreRender 之前和期间调用。 在 System.Web.UI.Page.SetFocus(控制控件) 在 System.Web.UI.Control.Focus() 在 C:\...\RecruiterPopups.ascx.cs:line 1134 中的 ....ShowChangePasswordPopup(RecruiterClass 招聘人员,字符串 commandName) 在 ....Default.Password_OnBeforeGo(MenuItem item, String queryString, Boolean forceRedirect) in C:\...\Default.Master.cs:line 92 在 ....MenuItem.GoDelegate.Invoke(MenuItem 项,字符串 queryString,布尔力重定向) 在 ....MenuItem.Go(String queryString, Boolean forceRedirect) 在 C:\...\Menu\MenuItem.cs:line 129 在 ....MenuItem.Go() 在 C:\...\Menu\MenuItem.cs:line 115 在 ....MainMenu.lnkMyAccountProfilePassword_Click(Object sender, EventArgs e) 在 C:\...\UserControls\MainMenu.ascx.cs:line 130 在 System.Web.UI.WebControls.LinkBut​​ton.OnClick(EventArgs e) 在 System.Web.UI.WebControls.LinkBut​​ton.RaisePostBackEvent(字符串 eventArgument) 在 System.Web.UI.WebControls.LinkBut​​ton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 eventArgument) 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 在 System.Web.UI.Page.ProcessRequestMain(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)

【问题讨论】:

  • 可能源于 PreRender 之后发生的异步方法。
  • 我在每个级别的 OnPreRender 覆盖上都有断点,并且在我收到错误之前没有一个会触发。谢谢你的建议。
  • 我相信在异步请求期间不会调用渲染。
  • 如果我删除调用“SetFocus”的代码行,那么一切正常,OnPreRender 事件触发并命中我的断点。
  • 有意思,控件隐藏了吗?

标签: c# asp.net page-lifecycle setfocus prerender


【解决方案1】:

在要回传到的页面上调用 SetFocus() 并导致重定向到另一个页面将导致此错误。尝试仅在 !Page.IsPostBack 时调用 Focus/SetFocus,您会发现该错误将不再发生。

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多