ModalPopupExtender 未从页面加载后的代码中显示

ModelPopupExtender not showing from code behind on pageLoad

我需要在页面加载时显示弹出窗口。我使用过 ModelPopupExtender。它确实显示在它的 TargetControlID 单击上,但未显示在代码隐藏的页面加载上。 我检查了堆栈上的许多解决方案,但其中 none 对我有用。

protected void Page_Load(object sender, System.EventArgs e)
{
    this.mpOTP.Show();
}

 <asp:Button ID="activateMpOtp" runat="server" Text="Open" ClientIDMode="Static"/>
    <asp:ModalPopupExtender ID="mpOTP" runat="server" BackgroundCssClass="popup-overlay" PopupControlID="pnlOTP" CancelControlID="closeOTP" TargetControlID="activateMpOtp"></asp:ModalPopupExtender>

    <asp:Panel ID="pnlOTP" runat="server" CssClass="popup-dialogue">
    </asp:Panel>

在控制台中出现此错误

您的标记不正确。

首先,您需要在页面标记的顶部使用以下指令注册 AjaxControlToolKit 控件,就在页面指令之后。

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="act %>

然后,您的标记应如下所示。下面列出了您的标记存在的问题。

  • 您没有包含取消按钮的标记
  • 而且你的控件前缀是错误的,因为它不应该是 asp 这是前缀是 ASP.Net Microsoft 控件而不是 AJAXControlToolKit (注意:你在你的注册指令中给出这个前缀对于 AjaxControl,Toolkit,在给定的代码示例中是 act,但您可以提供任何前缀并将其用于 modalpopuextender)

ModalPopupExtender 的正确标记

<asp:Button ID="activateMpOtp" runat="server" Text="Open" ClientIDMode="Static"/>
<act:ModalPopupExtender ID="mpOTP" runat="server" BackgroundCssClass="popup-overlay"
         PopupControlID="pnlOTP" CancelControlID="closeOTP"
         TargetControlID="activateMpOtp"></act:ModalPopupExtender>

<asp:Panel ID="pnlOTP" runat="server" CssClass="popup-dialogue">
  <div class="header">
    Modal Popup
  </div>
  <div class="body">
    Your content goes here
    <br />
    <asp:Button ID="closeOTP" runat="server" Text="Close" />
 </div>
</asp:Panel>