从服务器端启动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...
    }
}

从服务器端启动modaldialog

我用你描述的方式使用ModalPopupExtender的时候,我把它们包装在一个UpdatePanel中。这是让服务器端"启动"您所描述的操作的唯一方法。

好吧,看起来它确实有效。唯一的问题是在lnkPrompts_ModalPopupExtender.Show();后面有一个Response.Redirect这就是问题所在。对话框从未出现过。在注释掉重定向之后,它就可以正常工作了。

不管怎样,很抱歉浪费了你的时间。下次尝试新东西的时候应该更清醒一些…

您需要在客户端从javascript中完成此操作。服务器永远不能在客户端发起操作,但客户端可以询问服务器是否满足条件,并基于此采取操作。要做到这一点,您可能需要在按下按钮时从客户端执行Ajax后台调用。