从服务器端启动modaldialog

时间:2011-04-07 12:33:53

标签: c# asp.net server-side modalpopupextender

我创建了2个modaldialogs。我的问题是,如果满足一些条件(点击按钮后),我需要从服务器端显示它们。我一直在谷歌搜索,有一个解决方案,将扩展器添加到一个不可见的控件,并从代码启动它。 但由于没有任何表现,我想我做错了什么。我点击链接按钮尝试了一下,看看是否正常,这显示了对话框。

提前致谢。

标记:

<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...
    }
}

3 个答案:

答案 0 :(得分:0)

好吧,好像它确实有效。唯一的问题是我在Response.Redirect行后面有一个lnkPrompts_ModalPopupExtender.Show();,这就是问题所在。该对话框从未显示过。在评论出Redirect之后,它一切正常。

无论如何,抱歉浪费你的时间。在下次尝试新事物时应该更加清醒...

答案 1 :(得分:0)

我按照您描述的方式使用ModalPopupExtender的时间,我已将它们包装在UpdatePanel中。这是让服务器端启动&#34;的唯一方法。像你一样的行动。

答案 2 :(得分:-1)

您需要在客户端使用javascript执行此操作。服务器永远不能在客户端上启动操作,但客户端可以询问服务器是否满足条件并根据该操作采取操作。您希望这样做的方法可能是在按下按钮时执行从客户端到服务器的Ajax后台调用。