2012-04-18 57 views
4

我做了大量搜索,无法弄清楚。设置为ModalPopupExtender后,链接的OnClick代码不会执行TargetControlID

我有一个ModalPopupExtender弹出窗口,我想在用户单击链接DoSomething时显示。弹出窗口中有一个下拉控件,当用户要求打开对话框时,我会随即填充该下拉控件。这需要通过后面的代码发生在服务器端。目前我正尝试通过链接上的OnClick事件来完成此操作,但只要链接绑定到ModalPopupExtender,链接OnClick代码就不会执行。

代码片段:

<asp:LinkButton ID="lnkDoSomething" runat="server" onClick="lnkDoSomething_Click">Do Something</asp:LinkButton> 
<asp:ModalPopupExtender ID="mpelnklnkDoSomething" runat="server" BackgroundCssClass="modalBackground" 
    DropShadow="true" PopupControlID="lnkDoSomething" 
    PopupDragHandleControlID="pnlDragHandlerForlnkDoSomething" 
    TargetControlID="lnklnkDoSomething"></asp:ModalPopupExtender> 

的问题,尽快为我设定的ModalPopupExtender来的OnClick代码不执行链接。这显然是设计的,但对我来说(天真)没有意义,就好像用户点击了应该执行的OnClick代码的链接。

任何想法为什么这不被支持和正确的解决方案是什么?

回答

8

附上ModalPopupExtender到虚拟按钮及显示在模态的LinkButtonOnClick甚至从代码隐藏:

标记:

<asp:LinkButton ID="lnkDoSomething" runat="server" onClick="lnkDoSomething_Click">Do Something</asp:LinkButton> 
<asp:Button id="dummyButton" runat="server" style="display:none;" /> 

<asp:ModalPopupExtender ID="mpelnklnkDoSomething" runat="server" 
    BackgroundCssClass="modalBackground" DropShadow="true" PopupControlID="controlToPopUpId" 
    PopupDragHandleControlID="pnlDragHandlerForlnkDoSomething" 
    TargetControlID="dummyButton"></asp:ModalPopupExtender> 

代码隐藏:

protected void lnkDoSomething_Click(Object sender, EventArgs e) 
    { 
    //do work 
    mpelnklnkDoSomething.Show(); 
    } 
+0

非常好,谢谢瑞克它的工作原理。在相关说明中,您是否知道我们需要附加到虚拟按钮上的“为什么”?这似乎基本上是一个解决方案,所以我想知道是否有一个核心的ASP设计原因,为什么不允许它在链接上 – 2012-04-18 19:59:48

+0

当你关联按钮/ linkbutton,ModalPopUpExtender接管客户端onclick事件来做“弹出”。它返回false取消实际的客户端点击事件。虚拟按钮是ASP.NET真正需要的,可能是它实现的接口,所以它可以通过ASP.NET页面生命周期连接事件。 – 2012-04-18 20:03:38

+0

谢谢rick_schott。 – ZahidKakar 2013-12-16 14:19:38