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