C# AJAX工具包';不出现

C# AJAX工具包';不出现,c#,asp.net,asp.net-ajax,ajaxcontroltoolkit,C#,Asp.net,Asp.net Ajax,Ajaxcontroltoolkit,我在从服务器端调用模式弹出窗口时遇到一些问题。因此,我将ModalPopupXtender的targetcontrolID设置为隐藏标签。然后在一个按钮点击后的代码中,我尝试添加这个.modalpoup.show();不幸的是,发生这种情况时,模式弹出窗口不会出现。我可以看到代码被执行,但没有显示任何内容 这是我的ASP。减去按钮和popupextender的开头,因为出于某种原因,这些行不会显示 <asp:Button CssClass="Button" ID="button" runa

我在从服务器端调用模式弹出窗口时遇到一些问题。因此,我将ModalPopupXtender的targetcontrolID设置为隐藏标签。然后在一个按钮点击后的代码中,我尝试添加这个.modalpoup.show();不幸的是,发生这种情况时,模式弹出窗口不会出现。我可以看到代码被执行,但没有显示任何内容

这是我的ASP。减去按钮和popupextender的开头,因为出于某种原因,这些行不会显示

<asp:Button CssClass="Button" ID="button" runat="server" Text="Button" AccessKey="m" meta:resourcekey="buttonResource1" OnClick="button_Click" /> 

<ajaxToolkit:ModalPopupExtender ID="mpe" runat="server" TargetControlID="forpopup"
            PopupControlID="PopupPanel" BackgroundCssClass="modalBackground" />

       <asp:Label ID="forpopup" runat="server" Visible="False"></asp:Label>

        <asp:panel id="PopupPanel" runat="server" BorderStyle="Groove" BorderColor="black" BorderWidth="3px" BackColor="AliceBlue" Height="200px" Width="200px" style="display: none">

            <asp:Label ID="lblPopup" runat="server" Text="popup!"></asp:Label><br />
            <br />
            <asp:DropDownList ID="ddlData" runat="server">
            </asp:DropDownList><br />
            <br />

            <asp:Button ID="btnPopupOK" runat="server" Text="Ok" />
            <asp:Button ID="btnPopupCancel" runat="server" Text="Cancel" />
        </asp:panel>    

我通常在要修改的按钮/面板/控件之后添加任何类型的扩展器。我没有在指南中直接看到任何关于控件的说明,说明它们必须这样做,但是当我将扩展程序放在控件之前时,我遇到了太多问题

试着将扩展器放在有问题的面板和按钮之后,看看是否能解决问题。

根据

TargetControlID
是 激活模态的元素 弹出窗口

在示例代码中,
TargetControlID
设置为
Label ID=“forpopup”
,但在后面的代码中,您正试图使用
按钮ID=“Button”
的单击事件处理程序显示ModalPopup

您是否尝试过将
TargetControlID
更改为
“按钮”
,并查看ModalPopup是否出现

几张便条

  • 对于
    TargetControlID
    ,使用
    Label ID=“forpopup”
    的目的是什么
  • Label ID=“forpopup”
    将不会在客户端上以HTML格式呈现
编辑:

演示代码来演示如何使用-

aspx内容页

<asp:Content ID="Content1" ContentPlaceHolderID="Main" runat="server">    
  <asp:Button ID="btnShow" runat="server" Text="Open ModalPopup" />     

  <ajaxToolkit:ModalPopupExtender runat="server" ID="modal" BackgroundCssClass="darken" 
  CancelControlID="btnCancel" PopupControlID="pnl" TargetControlID="btnShow" />

  <asp:Panel ID="pnl" runat="server" style="width:55%;display:none;">
        <h1>You can now see me!</h1>
        <p>"Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
        sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
        Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 
        nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
        reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
        pariatur. Excepteur sint occaecat cupidatat non proident, sunt in 
        culpa qui officia deserunt mollit anim id est laborum."</p>
        <asp:Button ID="btnCancel" runat="server" Text="Close" />
  </asp:Panel>
</asp:Content>

我同意Dillie-O的观点,如果您从服务器端调用它,我认为您需要在其中安装一个更新面板:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
  <asp:panel id="PopupPanel" runat="server" BorderStyle="Groove" BorderColor="black" BorderWidth="3px" BackColor="AliceBlue" Height="200px" Width="200px" style="display: none">
    ...
  </asp:panel>
</ContentTemplate>
</asp:UpdatePanel>

我也有类似的问题。。我将扩展器的targetcontrolid设置为隐藏按钮,并尝试在服务器端代码中触发Show()事件。即使代码被命中,它也没有被显示。我发现问题在于我使用“visible=false”隐藏了隐藏的按钮,它不会将控件呈现给页面。我把它改为“style='display:none'”,它开始工作了。尝试将您的目标控件更改为隐藏按钮,并确保它正在渲染(只是没有显示),也许它会工作。

请将ModalPopupXtender的Behavior ID属性设置为某个值,然后您将能够显示和隐藏模式弹出窗口。

当TargetControlID按钮按下时,我遇到了模式弹出窗口不显示的问题

UseSubmitBehavior="false"

将其设置为“true”,看看这是否解决了您的问题。如果这样做有效,并且假设您不希望按钮提交,那么您可能需要在不希望按钮提交表单时停止按钮提交表单。

我不确定您是否需要样式:display=none。但是,您也可以显示弹出扩展器的代码吗?此外,使用扩展器,您可以将其指向一个按钮以显示弹出窗口,而无需使用后面的代码。display=none可防止弹出窗口在加载时显示,然后消失。标准做法。请编辑以显示弹出扩展器的定义。。。也许你的问题就在那里。出于某种原因,它没有显示我的扩展程序代码,即使当我点击编辑时,它也在那里。不管怎样,在这儿。这就在面板代码的正上方。我之前试过将其移动到最后一个位置,但仍然没有骰子:/hmm你说。。。您是否将其嵌套在UpdatePanel或其他内容中?如果是这样的话,您也会希望发布该代码,因为这些东西的嵌套很容易影响什么是有效的,什么是无效的。我已经对此进行了测试,并且不需要UpdatePanel-如果TargetControlID设置正确,则会截获回发,并执行异步回发,它运行服务器端代码并返回一个结果,导致显示ModalPopup。@Russ Cam,如果TargetControlID是用于激活弹出窗口的控件,则您所说的是真的。在这个问题中,它不是,@ashtame正在从codebehind激活弹出窗口,对吗?嗨,设置TargetControl的问题是弹出窗口被称为客户端,所以我在按钮下面的其他功能单击“不运行”。这是它说的将其设置为隐藏控件的地方。此ModalPopup将以编程方式生成。此弹出窗口所连接的ModalPopupXtender具有隐藏的TargetControl。通过调用ModalPopupXtender方法来显示和隐藏弹出窗口,可以通过服务器在代码隐藏中显示,也可以通过脚本在客户端上显示。如果ModalPopup被称为客户端,则为asp按钮设置OnClientClick属性,以运行JavaScript函数以按id获取模式弹出窗口,然后调用其show()功能我在回答中记下了这一点,因为我认为这可能是相关的。我记得以前也有过这个问题!好的,抓住科迪!
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
  <asp:panel id="PopupPanel" runat="server" BorderStyle="Groove" BorderColor="black" BorderWidth="3px" BackColor="AliceBlue" Height="200px" Width="200px" style="display: none">
    ...
  </asp:panel>
</ContentTemplate>
</asp:UpdatePanel>
protected void button_Click(object sender, EventArgs e)
{
    this.mpe.Show();
    UpdatePanel1.Update();
}
UseSubmitBehavior="false"