【问题标题】:ModalPopupExtender does not postbackModalPopupExtender 不回发
【发布时间】:2010-07-06 10:49:26
【问题描述】:

我有这个页面,其中有一个 ModalPopupExtender。现在显示为 ModalPopup 的面板有 2 个按钮,即“邀请”和“取消”。我的问题是,当我单击任一按钮时,不会发生回发,并且我无法运行我的服务器端代码。

当我点击“邀请”按钮时,它只是隐藏了 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>

请帮忙。

谢谢。

【问题讨论】:

    标签: c# asp.net ajaxcontroltoolkit modalpopupextender


    【解决方案1】:

    取出这部分标记:

    OkControlID="btnInvite" CancelControlID="btnCancel"
    

    评论后更新:

    在初始化阶段,客户端,这段代码被执行:

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

    所以基本上它为 _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;
        }
    },
    

    如您所见,它调用 e.preventDefault();这会导致 OKControl 的正常行为无法通过,而 this.hide() 将关闭模式弹出窗口本身。

    如果您想了解更多信息,建议您阅读控制工具包中的 ModalPopupBehavior.debug.js。

    【讨论】:

    • 谢谢哥们,这正是我想要的方式......但你能详细解释一下这些现象......当我删除该代码时实际发生了什么??
    【解决方案2】:

    不要分配 ok 控件,所以事件会正常工作。

    它也适用于取消控制,只是不要分配它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多