Дерево управления не соответствует состоянию просмотра во время предыдущего запроса - PullRequest
1 голос
/ 17 февраля 2012

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

Exception: Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.

Я не очень знаком с тем, как загружается и работает viewstate. Код создает некоторое представление сетки и динамически управляет им и вставляет их в placeHolder с именем phCallsDynamicGridHolder

Код, который создает исключение, всегда выглядит примерно так:

HtmlGenericControl summary = createNewCallsSummary(calls);
GridView gv = createGridView(calls, "Calls", width);
phCallsDynamicGridHolder.Controls.Add(summary);
phCallsDynamicGridHolder.Controls.Add(gv);
phCallsDynamicGridHolder.Controls.Add(createNewCallsTotalSummary());

Кто-нибудь знаком с причинами такого рода исключений? Страница содержит почти 2000 строк кода, по запросу я пропущу столько, сколько нужно.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2013

Попробуйте отключить ViewState для этой страницы.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind=" #####.aspx.cs" Inherits="#####" EnableViewState="false"%> 
0 голосов
/ 17 февраля 2012

Психическая отладка, я думаю, вы создаете динамическое управление для каждого запроса;Вы можете попробовать изменить код, чтобы создать динамическое управление только в пределах:

if (!IsPostBack)
{
    // here
}
...