В настоящее время я работаю над динамическим ядром для нескольких веб-проектов. Он имеет ядро, которое использует дерево и меню. И затем для каждого конкретного проекта он загружает несколько разных wuc в основной контент. Некоторые бизнес-проекты используют связанные с бизнесом wucs, а другие используют другие. Таким образом, продолжительность wuc действительно велика.
Теперь к моей проблеме: всякий раз, когда пользователь нажимает элемент меню или древовидный элемент, он загружает wuc для основного содержимого, связанного с этим объектом.
Но у меня есть некоторые ошибки состояния просмотра, и я искал 2 дня, и ни одно из объясненных решений не работает для моего проекта.
Все мои wuc должны иметь включенное viewstate.
Цикл ->
Страница (Control A) выполняет постбэк с переменной для изменения элемента управления на ControlB в wucPanel (UpdatePanel).
OnLoad LoadRequested Wuc.
Текущий код
protected void Load_Page(object sender, EventArgs e)
{
//Code to decide which wuc to load.
UserControl wucc = (UserControl)Page.LoadControl(sFilePath);
ParentControl.ContentTemplateContainer.Controls.Add(wucc);
}
Я пробовал несколько исправлений, таких как добавление различных идентификаторов в wuc, но это либо отключает внутренние функции управления, такие как обработчики и т. Д., Либо генерирует ту же ошибку состояния представления.
Одно решение, которое я нашел, состояло в том, чтобы загрузить ControlA, а затем просто удалить его и затем загрузить ControlB. Но это отключило скрипты для моего стороннего контроллера (Telerik).
Я также читал о наличии разных PlaceHolders для каждого typof, но, поскольку я ожидаю, что получу до 50 различных контролей, я не думаю, что это мне поможет.
И переход от Page_Load -> Page_Init вызвал ту же ошибку.
Ошибка:
Не удалось загрузить viewstate. Дерево управления, в которое загружается состояние просмотра, должно соответствовать дереву управления, которое использовалось для сохранения состояния просмотра во время предыдущего запроса. Например, при динамическом добавлении элементов управления элементы, добавленные во время обратной передачи, должны соответствовать типу и положению элементов управления, добавленных во время первоначального запроса.