试图自己包含使用AjaxToolkit ModalPopUpExtender的弹出窗口

时间:2009-02-05 21:57:09

标签: asp.net asp.net-ajax modalpopupextender

我需要在我的网站上存在3种不同类型的ajax弹出窗口。我希望我可以简单地为每个人创建一个用户控件,并将面板和模态弹出扩展器放在每个内部,但这似乎不起作用。有没有人之前尝试过这个,或者你有一个建议,我怎么能避免重复的代码为每个弹出不同的页面?谢谢!

3 个答案:

答案 0 :(得分:0)

一种选择是在asp.net用户控件(.ascx页面)中编写弹出窗口,并将其包含在您需要弹出窗口的页面上。在ascx页面中有一个显示弹出窗口的公共方法,并在需要时从父页面调用它。如果您在父页面上已经有一个脚本管理器,那么您不能在ascx页面中拥有第二个脚本管理器,但除此之外不应该有任何会阻止其工作的内容。希望这有帮助!

编辑:这是我的模态弹出扩展器控件的样子......

<cc1:ModalPopupExtender 
    ID="mpeClassroom" 
    BackgroundCssCLass="modalBackground"      
    runat="server"        
    CancelControlID="lbClose"
    OnOkScript="onOk()"
    TargetControlID="Button1" 
    PopupControlID="pnlClassroom">
</cc1:ModalPopupExtender>

在我的代码页面后面,我的方法只调用mpeClassroom.Show();

答案 1 :(得分:0)

啊,我相信用户控制我的问题。

ModalPopUpExtender需要设置TargetID属性,否则会发生错误。由于这是在UserControl中,我刚刚创建了一个虚拟链接按钮,它没有做任何事情,我将属性设置为false。

    <asp:LinkButton ID="lnkBlank" runat="server" Visible="false" />
    <asp:Panel ID="plContainer" style="display: none;" runat="server">
            Hello?
    </asp:Panel>
    <cc1:ModalPopupExtender ID="mpe" runat="server" 
            BehaviorID="test"
            TargetControlID="lnkBlank" 
            PopupControlID="plContainer" />

显然它并不欣赏,当我将visible属性设置为true时,它开始工作。不知道TargetID的原因是什么,我认为,大多数弹出窗口可以从关于页面的多个链接调用。也许我还不完全清楚如何使用这种控制。

答案 2 :(得分:0)

隐藏链接的问题为TrgetControlID就是这样;当你将其可见性设置为false时,服务器也不会呈现它。然后PopExtender无法在页面上找到控件。

尝试使用display:none应用样式,而不是将其可见性设置为false。这应该工作!