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

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

How can I pass data from an aspx page to an ascx modal popup?

我对ASP.NET还是很陌生,并试图学习如何做。我来自C#背景,因此代码隐藏部分很容易,但是像Web开发人员这样的思维却并不熟悉。

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

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

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

有什么想法吗?


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


在根据DancesWithBamboo的回答进行了一些研究之后,我弄清楚了如何使其工作。
在我的aspx页面中对我的ascx页面的示例引用:

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

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

1
2
3
4
AjaxControlToolkit.ModalPopupExtender mpe =
    (AjaxControlToolkit.ModalPopupExtender)
          MyModalPage.FindControl("modalPopup");
mpe.Show();


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

是您在同一页面(例如隐藏面板等)内调用的模式代码;

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


推荐阅读