CSLA, ASP.NET и AJAX ModalPopupExtender - как не загружать объект, когда ModalPopup не виден - PullRequest
0 голосов
/ 11 января 2010

Я нахожусь в середине проекта ASP.NET, где я использую инфраструктуру CSLA и элемент управления AJAX ModalPopupExtender. Ранее я использовал CSLA и ModalPopupExtender в разных проектах, но я впервые использую их вместе.

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

Вместо этого, на самом деле, он работает, загружая элементы управления в ModalPopup, даже если всплывающее окно все еще скрыто, например, во время начальной загрузки страницы. Это приводит к ошибке, поскольку объект, к которому привязаны элементы управления, еще не существует, поэтому он не может правильно отобразить элементы управления и соответствующий Javascript на странице aspx. Ошибка: "Ошибка времени выполнения Microsoft JScript: Sys.ArgumentNullException: значение не может быть нулевым. Имя параметра: элемент "

Мой текущий обходной путь - создать фиктивный объект заранее, просто для этого есть что-то, что может изначально связать элементы управления во всплывающем окне. Затем я заменяю этот объект, когда пользователь нажимает кнопку. Мне интересно, есть ли более простой способ с меньшими накладными расходами, который я мог бы упустить.

1 Ответ

0 голосов
/ 17 января 2010

Несмотря на то, что элементы управления скрыты, они все еще создаются и проходят жизненный цикл страницы веб-форм. ModalPopup просто отображает уже связанные и визуализированные элементы управления.

Я бы предложил использовать javascript-метод ajax (создайте объект XmlHttp - это очень легко сделать с помощью jquery). Ваши элементы управления будут отображены и пройдут жизненный цикл страницы в то время. Ваше связывание произойдет с помощью метода CslaDataSource OnSelectObject.

...