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

6

我对ASP.NET还比较陌生,正在努力学习如何操作。由于我的背景是C#,所以代码后端部分很容易,但像Web开发人员一样思考还不太熟悉。

我有一个包含复选框网格的aspx页面。我有一个按钮,通过Button_Click事件编写来收集哪些行被选中,并将其列表创建为会话变量。同一个按钮通过TargetControlID被我的ascx页面的ModalPopupExtender引用,该控件控制ascx页面上的面板。

当单击按钮时,模态弹出窗口打开,但Button_Click事件从未触发,因此模态窗口没有获取其会话数据。

由于这两个页面是分开的,因此我无法从aspx.cs代码调用ModalPopupExtender,我无法从ascx.cs代码访问复选框列表,也看不到一种方法来填充我的会话变量,然后以编程方式激活其他隐藏的按钮或控件,然后打开我的模态弹出窗口。

您有什么想法吗?

3个回答

3
用户控件(.ascx)文件是一组控件,您将它们组合在一起以提供一些可重用的功能。其中定义的控件仍会在页面生命周期(.aspx)期间添加到页面的控件集合中。ModalPopupExtender使用javascript和dhtml在客户端显示和隐藏用户控件中的控件。您看到的是ModalPoupExtender通过客户端处理单击事件,并取消向服务器的后续提交。这是默认行为,是设计上的。但是,您确实可以从用户控件的代码后台访问页面的控件集合,因为它们都是同一控件树的一部分。只需使用任何控件的FindControl(xxx)方法来搜索所需的子控件即可。

1

在参考了DancesWithBamboo的回答后,我进行了一些研究,终于找到了解决方法。
以下是在aspx页面中引用ascx页面的示例:

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

用于获取并打开ModalPopupExtender(名为modalPopup)的aspx代码后端如下:

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

0

抱歉,我有些困惑。您无法直接调用ascx文件,所以...

您调用的模态框代码是否在同一页内,例如一个隐藏的面板等;

还是在单击事件中调用另一个aspx页面?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接