Я пытаюсь создать веб-страницу, которая будет отображать соответствующий пользовательский элемент управления на основе выбранного значения в раскрывающемся списке.
В основном макет страницы такой:
Выпадающий список
<</strong> Пользовательский элемент управления создан на основе выпадающего списка >
У меня это наполовину работает ... элементы управления меняются при изменении выбора.
В OnInit () я динамически создаю последний выбранный элемент управления (значение которого сохраняется в состоянии сеанса, поскольку ViewState недоступен в OnInit).
Когда происходит изменение выбора, я удаляю старый пользовательский элемент управления и добавляю новый. Проблема в том, что при добавлении нового элемента управления из события изменения выбора я не могу сохранить изменения от пользователя при первой обратной передаче . После первого возврата назад выбранный элемент управления создается из OnInit вместо события Change, и с этого момента состояние сохраняется до следующего изменения выбора.
Вот метод SelectionChanged:
protected void SelectionChanged(object sender, EventArgs e)
{
SelectedValue = int.Parse(DropDownList.SelectedValue); //Store in Session
Control userControl = GetSpecificUserControl(SelectedValue);
PlaceHolder1.Controls.Clear(); // Remove old user control
PlaceHolder1.Controls.Add(userControl);
}
Любые изменения, внесенные пользователем в новый элемент управления после выбора SelectionChanged, не сохраняются в следующем посте. Однако последующие постбэки сохраняются. В этот момент элемент управления создается в OnInit ().
Есть ли какой-нибудь способ принудительно вернуть правильный пост и ViewState при изменении элемента управления? Можно ли принудительно переинициализировать страницу после изменения элемента управления?