У меня есть разметка в этом формате: -
<asp:UpdatePanel runat="server" id="UpdatePanelList" UpdateMode="conditional">
<ContentTemplate>
<asp:ListView></asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" ID="UpdatePanelMain" UpdateMode="Conditional">
<ContentTemplate />
</asp:UpdatePanel>
На этой панели обновлений, если можно найти запись из базы данных, должен отображаться элемент управления DataGrid (с элементами управления меткой и раскрывающимся списком).Если нет, то должен отображаться элемент управления HtmlGenericControl DIV с соответствующим сообщением, в котором пользователю предлагается создать запись.Оба этих элемента управления создаются динамически, которые заполняются пользовательскими классами, использующими функции «output», такие как «ToString».
Если я тестирую операцию с несколькими последовательными элементами управления DataGrid, заполняющими UpdatePanel, это работает нормально.Аналогично, HtmlGenericControl DIV заполняется, как и ожидалось, также в нескольких последовательных последовательностях.
Однако, когда я тестирую другой тип элемента управления для заполнения UpdatePanel, это работает в первом случае, но любые дополнительные обратные передачи для заполнения UpdatePanel завершаются ошибкой идиалоговое окно предлагает:
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.
Я был убежден, что элемент управления UpdatePanel в этом случае получает контроль над состоянием просмотра для динамических элементов управления.
Как восстановить состояние представления, чтобы разрешить отображение нескольких типов элементов управления в одной и той же панели обновления?
Спасибо.