简体   繁体   English

ModalPopupExtender不回发

[英]ModalPopupExtender does not postback

I have this page where in i have a ModalPopupExtender. 我在此页面中有一个ModalPopupExtender。 Now the panel that shows up as a ModalPopup has 2 buttons namely "Invite" and "Cancel". 现在,显示为ModalPopup的面板具有2个按钮,即“邀请”和“取消”。 My problem is that when i click on either of the buttons postback does not occur and i am unable to run my server side code. 我的问题是,当我单击任何一个按钮时都不会发生回发,并且我无法运行服务器端代码。

When i click on the "Invite" button it simply hides the ModalPopupExtender control and does nothing!! 当我单击“邀请”按钮时,它只是隐藏了ModalPopupExtender控件,什么也不做!

    <asp:ModalPopupExtender ID="mpeInviteFriend" runat="server"
  TargetControlID="lbInvite" PopupControlID="pnlInviteFriend"
  OkControlID="btnInvite" CancelControlID="btnCancel"
  BackgroundCssClass="diabledBackground" Y="100"></asp:ModalPopupExtender>

 <asp:Panel ID="pnlInviteFriend" runat="server">
  <div class="popUpBoxBackground" style="height:230px; width: 400px">
   <div class="popUpBox">
    <div class="popUpHeader">
     <b>Invite a Friend</b>
    </div>
    <div class="popUpBody" style="height:210px">
     <div style="padding: 10px">
      <table cellpadding="0" cellspacing="0" border="0" width="100%">
       <tr>
        <td>You have chosen to invite your friend to join this community.</td>
       </tr>
       <tr>
        <td style="padding: 8px 0px 0px 0px">Email address of your friend:</td>
       </tr>
       <tr>
        <td style="padding: 4px 0px 5px 0px" align="right">
         <asp:TextBox ID="TextBox1" runat="server" 
          TextMode="MultiLine" CssClass="inputTextbox"
          Width="99%" Height="28px"></asp:TextBox>
         <span class="smallInfoText" style="color: #000">In case you want to invite more than 1 friend, separate their mail id with a ;</span>
        </td>
       </tr>
       <tr>
        <td style="padding: 4px 0px 0px 0px">Would you like to add a personal note?</td>
       </tr>
       <tr>
        <td style="padding: 4px 0px 5px 0px" align="right">
         <asp:TextBox ID="txtInvitationText" runat="server" 
          TextMode="MultiLine" CssClass="inputTextbox"
          Width="99%"></asp:TextBox>
         <span class="smallInfoText" style="color: #000">If not then leave it blank and we will take care of the note : )</span>
        </td>
       </tr>
       <tr>
        <td align="right">
         <asp:Button ID="btnInvite" runat="server" OnClick="btnInvite_Click" Text="Invite" style="margin-right: 10px" Width="60px" />
         <asp:Button ID="btnCancel" runat="server" OnClick="btnCancel_Click" Text="Cancel" Width="60px" />
        </td>
       </tr>
      </table>
     </div>
    </div>
   </div>
  </div>
 </asp:Panel>

Please help. 请帮忙。

Thank you. 谢谢。

Take out this part of your markup: 删除标记的这一部分:

OkControlID="btnInvite" CancelControlID="btnCancel"

Update after comment: 评论后更新:

In the initialization phase, client side, this piece of code gets executed: 在客户端的初始化阶段,执行以下代码:

    if (this._OkControlID) {
        this._okHandler = Function.createDelegate(this, this._onOk);
        $addHandler($get(this._OkControlID), 'click', this._okHandler);
    }

So basically it creates a handler towards the _onOK function: 因此,基本上,它将为_onOK函数创建一个处理程序:

_onOk: function(e) {
    /// <summary>
    /// Handler for the modal dialog's OK button click
    /// </summary>
    /// <param name="e" type="Sys.UI.DomEvent">
    /// Event info
    /// </param>

    var element = $get(this._OkControlID);
    if (element && !element.disabled) {
        if (this.hide() && this._OnOkScript) {
            window.setTimeout(this._OnOkScript, 0);
        }
        e.preventDefault();
        return false;
    }
},

as you can see it calls e.preventDefault(); 如您所见,它调用e.preventDefault(); which causes the normal behavior of the OKControl to not go through while this.hide() will close the modal popup itself. 这会导致OKControl的正常行为无法通过,而this.hide()将关闭模式弹出窗口本身。

I suggest you read the ModalPopupBehavior .debug.js from the control toolkit if you want to know more. 如果您想了解更多信息,建议您从控制工具箱中阅读ModalPopupBehavior .debug.js。

Don't assign the ok control, so event will work fine. 不要分配ok控件,这样事件就可以正常工作。

Also it works for cancel control just don't assign them. 也适用于取消控制,只是不分配它们。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM