0

我在一个 ASP.NET 项目的中间,我正在使用 CSLA 框架和 AJAX ModalPopupExtender 控件。我之前在不同的项目中使用过 CSLA 和 ModalPopupExtender,但这是我第一次将它们一起使用。

我希望它工作的方式是让用户按下一个按钮,这将创建一个对象的实例并显示模式弹出窗口。基于刚刚创建的对象,弹出窗口具有绑定到 CslaDataSource 的控件。

相反,它的实际工作方式是在 ModalPopup 上加载控件,即使弹出窗口仍然隐藏,例如在初始页面加载期间。这会产生错误,因为控件所绑定的对象尚不存在,因此无法在 aspx 页面上正确呈现控件和相应的 Javascript。错误是:“Microsoft JScript 运行时错误:Sys.ArgumentNullException:值不能为空。参数名称:元素”

我目前的解决方法是预先创建一个虚拟对象,以便弹出窗口上的控件最初可以绑定到一些东西。然后,当用户按下按钮时,我会替换该对象。我想知道是否有一种更简单的方法可以减少我可能会丢失的开销。

4

1 回答 1

0

即使控件被隐藏,它们仍然会被创建并且它们仍然会经历 Web 表单页面的生命周期。ModalPopup 只显示已经绑定和渲染的控件。

我建议使用 javascript ajax 方法(创建一个 XmlHttp 对象——使用 jquery 很容易做到这一点)。您的控件将被呈现并在那个时候经历页面生命周期。您的绑定将使用 CslaDataSource OnSelectObject 方法进行。

于 2010-01-17T19:45:35.323 回答