Как я могу восстановить экземпляры динамических пользовательских элементов управления ASP.NET без использования базы данных?

В настоящее время я работаю с частью моего приложения, которая использует Dynamic Web User Controls, и у меня возникли некоторые проблемы с поиском лучшего способа создания экземпляров элементов управления при обратной передаче с помощью ViewState или каким-либо другим способом, который не потребовать от меня запросить базу данных по каждой обратной передаче.

По сути, на моей странице есть пользовательский элемент управления, который содержит панель для хранения переменного количества дочерних пользовательских элементов управления и кнопку с надписью «Добавить элемент управления», функция которой довольно понятна.

Дочерний пользовательский элемент управления довольно прост; это просто кнопка удаления, выпадающий список и элемент управления выбора времени, расположенные в ряд. Каждый раз, когда пользователь нажимает кнопку «Добавить элемент управления» на родительском элементе управления, на панель, содержащую дочерние элементы управления, добавляется новая «строка».

То, что я хотел бы сделать, - это иметь возможность добавлять и удалять элементы управления в эту коллекцию, изменять значения и выполнять любые необходимые мне операции «в памяти», не обращаясь к базе данных. Когда я закончу добавлять элементы управления и заполнять их значения, я хочу нажать «сохранить», чтобы сохранить / обновить все данные из элементов управления в базе данных сразу. В настоящее время единственное решение, которое я нашел, - просто сохранять данные в базе данных каждый пост обратно, а затем использовать строки, хранящиеся в БД, для повторного создания элементов управления постбэком. Очевидно, что это вынуждает пользователя сохранять изменения в БД против их воли, и в случае, если он хочет отменить работу с элементами управления без сохранения своих данных, необходимо выполнить дополнительную работу, чтобы гарантировать, что ранее зафиксированные строки были удалены.

Из того, что я узнал об использовании динамических элементов управления, я знаю, что лучше всего добавлять элементы управления на страницу на этапе инициализации жизненного цикла, а затем заполнять их значения на этапе загрузки. Я также узнал, что единственный способ убедиться в том, что вы можете сохранить состояние представления элемента управления, это убедиться, что вы присваиваете каждому динамическому элементу управления уникальный идентификатор и обязательно назначаете ему точно такой же идентификатор при повторном создании элемента управления. Я также узнал, что ViewState на самом деле не загружается до окончания этапа Init в жизненном цикле. Вот где моя проблема. Как мне сохранить и получить имена этих элементов управления, если я не могу использовать состояние представления и не хочу выполнять какие-либо вызовы в базе данных? Возможна ли подобная манипуляция в памяти / пакетное сохранение значений даже с использованием ASP.net?

Любая помощь очень ценится,

Майк

Ответы на вопрос(3)

Ваш ответ на вопрос