2008-10-27 7 views
12

У меня есть UserControl, который содержит UpdatePanel. Когда я положил, что на странице, он выдает следующее сообщение об ошибке:Что вызывает ошибку «Невозможно отменить регистрацию UpdatePanel»?

Cannot unregister UpdatePanel with ID 'ReviewContentUpdatePanel' since it was not registered with the ScriptManager. This might occur if the UpdatePanel was removed from the control tree and later added again, which is not supported. Parameter name: updatePanel

ReviewContentUpdatePanel это имя панели обновления & он не удаляется или добавляется в коде, он существует на странице ASPX и не удаляется , Кто-нибудь сталкивался с этим раньше?

+0

У вас есть ScriptManager на страницу, содержащую UserControl? – tvanfosson 2008-10-27 02:31:35

+0

yep и скриптпрокси на usercontrol – 2008-10-27 02:32:41

+1

Можете ли вы отправить код? Большинство ссылок на эту ошибку связаны с динамическим добавлением обновлений/элементов управления. Динамически добавляется ли пользовательский элемент управления? – tvanfosson 2008-10-27 03:06:42

ответ

4

Вы управляете элементами управления в коде? Если так, взгляните на here и посмотрите, решит ли это вашу проблему.

1

В вашей разметке убедитесь, что вы указали идентификатор для обоих обновлений и для каждого контроля runat = "server" в своих родительских иерархиях.

5

Эта ошибка возникает, когда коллекция элементов управления, в которой проживает UpdatePanel, очищается с помощью Clear method или когда конкретная UpdatePanel удаляется с помощью Remove method.

Триггер для этих методов может быть реализацией CreateChildControls method для элемента управления содержит UpdatePanel. Обычно вы вызываете Controls.Clear() в верхней части этого метода, чтобы начать с чистого листа, если этот метод вызывается повторно.

3

У меня это случилось раньше. Чтобы исправить это, я просто удалил его, а затем повторно создал, и проблема исчезла.

0

Вы пытались включить ScriptManagerProxy в пользовательский элемент управления?

0

Попробуйте удалить скрипт-скрипт UserControl. В этом случае на странице будет только ScriptManager.

0

Это немного длинный снимок, но у меня были впечатления от расширений AJAX, особенно с панелью обновлений, в которой ошибки, создаваемые дочерними элементами управления, проявлялись как другая ошибка, создаваемая панелью обновления. Я видел ссылка на эту конкретную ошибку бросала из-за ошибки в контроле за детьми:

http://msmvps.com/blogs/shareblog/archive/2009/03/11/cannot-unregister-updatepanel-with-id-since-it-was-not-registered-with-the-scriptmanager-and-moss.aspx

Не уверена, что это дело для вас или нет, но я потратил много часов гоняться из-за этого возникают неправильные ошибки.

2

Я надеюсь, что это поможет кому-то еще, поскольку это загнало меня в орехи. Найдя различные лакомые кусочки информации здесь и там здесь и в другом месте, я, наконец, придумал следующее исправление. Обратите внимание: я не динамически создаю эту панель обновления здесь или где-либо еще, и большинство информации о том, что было связано с созданием этого элемента управления динамически, которого я не знал.

Я использовал панель обновления внутри веб-пользовательского элемента управления, используемую на странице, унаследованной главной страницей с помощью диспетчера сценариев. Я не знаю, если это комбо было то, что было причиной, но это, как я установил его (внутри элемента управления веб-пользователя, где используется панель обновления):

protected override void OnInit(EventArgs e) 
{ 
    ScriptManager sm = ScriptManager.GetCurrent(this.Page); 
    MethodInfo m = (
    from methods in typeof(ScriptManager).GetMethods(
     BindingFlags.NonPublic | BindingFlags.Instance 
     ) 
    where methods.Name.Equals("System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel") 
    select methods).First<MethodInfo>(); 

    m.Invoke(sm, new object[] { updatePanel }); 
    base.OnInit(e); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^