当设置为ModalPopupExtender TargetControlID时,后面的链接OnClick代码不会执行

时间:2012-04-18 19:10:55

标签: c# asp.net ajax asp.net-ajax ajaxcontroltoolkit

我做了很多搜索,无法解决这个问题。

当用户点击链接DoSomething时,我想要显示一个ModalPopupExtender弹出窗口。弹出窗口有一个下拉控件,当用户要求打开对话框时,我想立即填充该控件。这需要通过后面的代码在服务器端发生。目前我正在尝试通过链接上的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代码的链接。

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

1 个答案:

答案 0 :(得分:8)

ModalPopupExtender附加到虚拟按钮,并在代码隐藏中显示LinkButton OnClick上的模式:

<强>标记:

<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();
  }