【问题标题】:CSLA, ASP.NET and AJAX ModalPopupExtender - how do I not load an object when the ModalPopup is not visibleCSLA、ASP.NET 和 AJAX ModalPopupExtender - 当 ModalPopup 不可见时如何不加载对象
【发布时间】:2010-01-11 19:43:40
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net modalpopupextender csla


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 2019-04-23
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多