Раньше при разработке динамически загружаемых приложений с одним типом управления с несколькими элементами управления у меня было огромное количество головных болей с помощью viewstate. Причиной этого было то, что элементы управления должны быть добавлены на этапе OnInit, а не после. Поскольку я обрабатывал контрольное событие (например, selectedIndexChanged в выпадающем списке), я загружал их на этапе обработчика событий. Я знаю о догоняющем контроле за дочерним контролем, но я заметил, что иногда это просто не работает.
Чтение значений из Request.Form
Мне еще раз поручено разработать такое приложение. На этот раз я решил использовать другой подход. Для тех элементов управления выбора, которые загружают динамический элемент управления на основе их значения, я проверю их значения обратной обратной связи (из Request.Form) во время этапа OnInit и сразу же загружаю элемент управления. Я не буду загружать никаких динамических элементов управления с этапа обработчика событий, так как это прямо перед OnPreRender, и это слишком поздно.
В итоге:
Какие подводные камни проверки значения элемента управления из коллекции Request.Form в начале цикла страницы (например OnInit), а затем выполняет действие, вместо того, проверьте, что значение из фактического контроля позже в цикле страниц?
Как можно управлять сервером asp.net не в
@BlueChameleon, это можно сделать, я сделал это. Я не говорю, что это будет мейнстрим - я просто говорю, что это можно сделать. Но также, пожалуйста, см. Мое редактирование. –
Честно говоря, я вижу, что вы здесь делаете, но ваша первоначальная ошибка, о которой вы говорили, никогда не произойдет в нашей системе, потому что, если мы начнем добавлять элементы управления вне формы, мы не сможем использовать Control.FindControl(), чтобы найти их, и это сломает все , Кроме того, группа стандартных элементов управления ASP.NET вызывает System.Web.UI.Page.VerifyRenderingInServerForm(), чтобы убедиться, что они находятся в форме, иначе они начнут бросать ошибки. – BlueChameleon