如何将数据从aspx页面传递到ascx模式弹出窗口?

如何将数据从aspx页面传递到ascx模式弹出窗口?

问题描述:

我对ASP.NET很新,想要学习如何完成任务。我来自C#背景,所以代码隐藏部分很简单,但像Web开发人员一样思考是不熟悉的。如何将数据从aspx页面传递到ascx模式弹出窗口?

我有一个包含复选框网格的aspx页面。我有一个通过Button_Click事件编码的按钮来收集列表,检查哪些行并从该列表中创建会话变量。我的ascx页面的ModalPopupExtender引用了相同的按钮(通过TargetControlID),它控制着ascx页面上的面板。

单击按钮时,模式弹出窗口打开,但Button_Click事件永远不会被触发,所以模式不会获取其会话数据。

由于两个页面是分开的,我不能从aspx.cs代码中调用ModalPopupExtender,我无法从ascx.cs代码中访问复选框列表,也没有办法填充我的会话变量,然后以编程方式激活一些其他隐藏的按钮或控制,然后将打开我的模式弹出。

有什么想法?

所有usercontrol(.ascx)文件都是一组控件,您已将它们组合在一起以提供一些可重用的功能。在其中定义的控件仍然添加到页面的控件集合(.aspx)中,在页面生命周期中。 ModalPopupExtender使用javascript和dhtml来显示和隐藏usercontrol客户端中的控件。你所看到的是,点击事件正在由ModalPoupExtender处理客户端,并取消回发到服务器。这是设计的默认行为。您当然可以从您的用户控件的代码隐藏中访问该页面的控件集合,不过因为它全部是同一个控件树的一部分。只需使用任何控件的FindControl(xxx)方法来搜索您需要的孩子。

对不起,但我很困惑。你不能直接调用ascx,所以...

是你从同一页面调用的模态代码,如隐藏面板等;

或者它是另一个aspx页面,你正在调用一个点击事件?

经过DancesWithBamboo的答案后的一些研究,我想出了如何使其工作。
一个例子提及我的ascx页面我的aspx页面内:

<uc1:ChildPage ID="MyModalPage" runat="server" /> 

的ASPX代码隐藏抓住并打开ModalPopupExtender(名为modalPopup)是这样的:

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
      MyModalPage.FindControl("modalPopup"); 
mpe.Show();