ASP.NET: Как заполнить динамически добавленные элементы управления, чтобы успокоить динамически добавляемый RequiredFieldValidator? - PullRequest
1 голос
/ 24 марта 2012

Я добавляю динамические элементы управления на страницу на основе данных из базы данных, чтобы генерировать вопросы RadioButtonList.

Иногда требуются вопросы, и в этом случае после получения данных из базы данных и заполнения RadioButtonList я динамически добавляю RequiredFieldValidator для RadioButtonList.

Проблема возникает при обратной передаче,когда в Page_Load () я выполняю Page.Validate (), которая всегда завершается неудачей.Я обнаружил, что это потому, что элементы управления повторно добавляются после обратной передачи, но они не заполняются ответами пользователя.

Мой вопрос:

Когда я могузахватить ответ пользователя, как только он нажмет «Отправить», где я могу его сохранить и каков наилучший способ вернуть его, чтобы Page.Validate () проверил по элементам управления правильные ответы?

1 Ответ

3 голосов
/ 24 марта 2012

Вместо создания элементов проверки в Page_Load (или в функции, которая вызывается из page_Load), сделайте это в Page_Init

Для получения дополнительной информации см. Page Lifecycle :

В жизненном цикле страницы его размещение в Page_Init позволяет создавать элементы управления при каждой загрузке страницы, но ДО применения значений состояния просмотра.Это означает, что элементы управления созданы, а затем применяется выбор пользователя.

Если он имеется в Page_Load, то элементы управления создаются ПОСЛЕ применения значений Viewstate.Это означает, что элементы управления просто создаются с нуля после применения состояния представления, сбрасывая все до значения по умолчанию.

На самом деле, эта страница говорит об этом лучше:

  • Во время инициализации страницы доступны элементы управления на странице и установлено свойство UniqueID каждого элемента управления.Любые темы также применяются к странице.Если текущий запрос является обратной передачей, данные обратной передачи еще не были загружены, а значения управляющих свойств не были восстановлены до значений из состояния просмотра.

  • Во время загрузки, если текущий запрос является обратной передачей, свойства элемента управления загружаются с информацией, восстановленной из состояния просмотра и состояния управления.

  • Используйте Page_Init, когда вам нужно динамически создавать элементы управления.Элементы управления создаются при каждом запуске страницы.Лучшее место для этого - функция Page_Init.
...