从服务器端启动modaldialog
本文关键字:modaldialog 启动 服务器端 | 更新日期: 2023-09-27 17:48:59
我已经创建了2个模态对话框。我的问题是,如果满足一些条件(单击按钮后),我需要从服务器端显示它们。我一直在谷歌周围,有一个解决方案,将扩展器添加到一个不可见的控件,并从代码启动它。但既然没有显示,我想我做错了什么。我试着点击链接按钮,看看是否有效,这显示了对话框。
提前感谢。
标记:
<asp:LinkButton ID="lnkPrompts" runat="server">LinkButton</asp:LinkButton>
<asp:ModalPopupExtender ID="lnkPrompts_ModalPopupExtender" runat="server"
BackgroundCssClass="modalBackground" Enabled="True"
TargetControlID="lnkPrompts" PopupControlID="pnlPromptModal"
OkControlID="pnlPromptModal">
</asp:ModalPopupExtender>
<asp:Panel ID="pnlPromptModal" runat="server" Width="350px" Height="70px"
CssClass="modalPopup" Style="display: none;">
Some text
<div style="">
<asp:Button ID="btnModalPromptOk" runat="server" Text="OK" />
</div>
</asp:Panel>
在服务器端:
protected void btnViewPrompts_Click(object sender, EventArgs e)
{
if (conditionMet)
{
Response.Redirect("IvrPrompts.aspx?Id=" + breakdownView.Id);
}
else
{
//ToDo: Show modaldialogbox
lnkPrompts_ModalPopupExtender.Show(); //This does nothing...
}
}
我用你描述的方式使用ModalPopupExtender的时候,我把它们包装在一个UpdatePanel中。这是让服务器端"启动"您所描述的操作的唯一方法。
好吧,看起来它确实有效。唯一的问题是在lnkPrompts_ModalPopupExtender.Show();
后面有一个Response.Redirect
这就是问题所在。对话框从未出现过。在注释掉重定向之后,它就可以正常工作了。
您需要在客户端从javascript中完成此操作。服务器永远不能在客户端发起操作,但客户端可以询问服务器是否满足条件,并基于此采取操作。要做到这一点,您可能需要在按下按钮时从客户端执行Ajax后台调用。