Что вызывает ошибку «Не удается отменить регистрацию UpdatePanel»? - PullRequest
12 голосов
/ 27 октября 2008

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

Невозможно отменить регистрацию UpdatePanel с идентификатором «ReviewContentUpdatePanel», так как не был зарегистрирован в ScriptManager. Это может произойти, если UpdatePanel был удален из управляющее дерево и позже добавленное снова, который не поддерживается. параметр имя: updatePanel

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

Ответы [ 8 ]

5 голосов
/ 24 февраля 2009

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

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

4 голосов
/ 27 октября 2008

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

3 голосов
/ 25 сентября 2013

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

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

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);
}
3 голосов
/ 24 февраля 2009

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

1 голос
/ 10 февраля 2009

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

0 голосов
/ 05 июня 2009

Это довольно далеко, но у меня был опыт работы с расширениями 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

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

0 голосов
/ 19 мая 2009

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

0 голосов
/ 28 февраля 2009

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

...