Элементы управления Extender не могут быть зарегистрированы после PreRender - PullRequest
2 голосов
/ 08 марта 2011

Я создаю Dynamic UserControls с динамическими AjaxControls. Затем я храню каждый из пользовательских элементов управления в коллекции. При обратной передаче я вызываю пользовательские элементы управления в коллекции для повторного создания интерфейса. Это работает, если я использую только стандартные элементы управления HTML, но НЕ работает с элементами управления AJAX. Я получаю эту ошибку на PostBack Элементы управления расширителем могут быть не зарегистрированы после PreRender . До сих пор я пробовал следующее:

  1. MyBase.OnPreRender (e) на странице и контроль пользователя
  2. EnsureChildControls () в OnInit
  3. Добавлен ScriptManager в MasterPage Ничего из этого не работает ...

Если я воссоздаю все элементы управления, включая те, что находятся внутри usercontrol, то я не получаю никакой ошибки, однако для выполнения обратной передачи требуется вечность, а не просто вызов коллекции UserControls.

Трассировка стека:

в System.Web.UI.ScriptControlManager.RegisterExtenderControl [TExtenderControl] (TExtenderControl extenderControl, Control targetControl)

в System.Web.UI.ScriptManager.RegisterExtenderControl [TExtenderControl] (TExtenderControl extenderControl, Control targetControl)

в System.Web.UI.ExtenderControl.RegisterWithScriptManager ()

в System.Web.UI.ExtenderControl.OnPreRender (EventArgs e)

в AjaxControlToolkit.ExtenderControlBase.OnPreRender (EventArgs e) в d: \ hg \ act \ Server \ AjaxControlToolkit \ ExtenderBase \ ExtenderControlBase.cs: строка 365

в AjaxControlToolkit.DropDownExtender.OnPreRender (EventArgs e) в d: \ hg \ act \ Server \ AjaxControlToolkit \ DropDown \ DropDownExtender.cs: строка 157

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Control.PreRenderRecursiveInternal ()

в System.Web.UI.Page.ProcessRequestMain (логический includeStagesBeforeAsyncPoint, логический includeStagesAfterAsyncPoint)

...