如何将数据从aspx页面传递到ascx模式弹出窗口?
我对ASP.NET相当陌生,并试图学习如何完成事情。我来自Cbackground,因此代码隐藏部分很容易,但是像Web开发人员这样的思维却并不熟悉。
我有一个aspx页面,其中包含复选框网格。我有一个通过Button_Click事件编码的按钮,用于收集要检查的行的列表并从该列表中创建会话变量。我的ascx页面的ModalPopupExtender引用(通过TargetControlID)相同的按钮,该按钮控制ascx页面上的面板。
单击按钮后,将打开模式弹出窗口,但不会触发Button_Click事件,因此模式不会获取其会话数据。
由于两个页面是分开的,所以无法从aspx.cs代码调用ModalPopupExtender,也无法从ascx.cs代码访问复选框列表,也看不到填充会话变量的方法然后以编程方式激活其他一些隐藏的按钮或者控件,这将打开我的模式弹出窗口。
有什么想法吗?
解决方案
回答
对不起,但是我很困惑。我们不能直接调用ascx,所以...
我们是在同一页面(例如隐藏面板等)中调用的模式代码吗?
还是我们在点击事件中调用的另一个aspx页面?
回答
所有usercontrol(.ascx)文件都是一组控件,这些控件已组合在一起以提供一些可重用的功能。在页面生命周期内,其中定义的控件仍将添加到页面的控件集合(.aspx)中。 ModalPopupExtender使用javascript和dhtml在usercontrol客户端中显示和隐藏控件。我们会看到,单击事件由ModalPoupExtender在客户端处理,并且正在取消回发到服务器的操作。这是设计上的默认行为。我们当然可以从用户控件的代码后面访问页面的控件集合,因为它是同一控件树的一部分。只需使用任何控件的FindControl(xxx)方法来搜索所需的子控件即可。
回答
在根据DancesWithBamboo的回答进行了一些研究之后,我弄清楚了如何使其工作。
在我的aspx页面中对我的ascx页面的示例引用:
<uc1:ChildPage ID="MyModalPage" runat="server" />
捕获并打开ModalPopupExtender(称为modalPopup)的aspx代码如下所示:
AjaxControlToolkit.ModalPopupExtender mpe = (AjaxControlToolkit.ModalPopupExtender) MyModalPage.FindControl("modalPopup"); mpe.Show();