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