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

Posted

技术标签:

【中文标题】如何将数据从 aspx 页面传递到 ascx 模式弹出窗口?【英文标题】:How can I pass data from an aspx page to an ascx modal popup? 【发布时间】:2010-09-05 23:23:50 【问题描述】:

我对 ASP.NET 还很陌生,并试图了解事情是如何完成的。我来自 C# 背景,因此代码隐藏部分很简单,但像 Web 开发人员一样思考并不熟悉。

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

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

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

在对 DancesWithBamboo 的回答进行一些研究后,我想出了如何让它发挥作用。 在我的 ascx 页面中对我的 ascx 页面的示例引用:

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

获取并打开 ModalPopupExtender(名为 modalPopup)的 aspx 代码如下所示:

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

【讨论】:

【参考方案3】:

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

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

还是您在点击事件上调用的另一个 aspx 页面?

【讨论】:

以上是关于如何将数据从 aspx 页面传递到 ascx 模式弹出窗口?的主要内容,如果未能解决你的问题,请参考以下文章

ASP NET 如何将事件从 ASPX 发送到 ASCX

从文件后面的 ascx 代码调用 Aspx javascript 函数

如何从 aspx 中的 Gridview 行中检索主键以在 userControl.ascx 中使用?

你如何强制 Visual Studio 为 aspx/ascx 文件重新生成 .designer 文件?

ASP.NET怎么将本页面内的某个参数传递到另一个页面中呢?

可以使用 jQuery.load() 函数加载 ASCX 吗?