Подтвердить что ты не робот

Что вызывает ошибку "Can not unregister UpdatePanel"?

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

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

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

4b9b3361

Ответ 1

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

Триггером для этих методов может быть реализация метода

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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);
}

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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