ASP.NET:ModalPopupExtender可防止触发按钮单击事件

这是我正在尝试做的事:点击我页面上的一个按钮,这反过来使(2)事情发生:

  1. 显示ModalPopup以防止用户按任何按钮或更改值
  2. 调用我的代码隐藏方法,完成后隐藏ModalPopup

这是ASP标记:

      

Saving...

现在,这是我的C#代码背后的代码:

 protected void btnSaveData_Click(object sender, EventArgs e) { UpdateUserData(GetLoggedInUser()); modalPopup.Enabled = false; } 

为什么这不起作用? ModalPopup显示完美,但btnSaveData_Click事件永远不会触发。

更新:第一个建议对我不起作用。 我也尝试了你的第二个建议(只要它适用于我)。 我的一个小的区别是我的模态面板上没有按钮(pnlHidden) – 它只是一条消息。 我确实尝试在客户端使用Javascript事件,这至少与我的服务器端事件并发。 这是个好消息,但我似乎无法找到或获取ModalPopupExtender或其BehaviorID的句柄。 这不起作用:

 function showOverlay() { var popup = $find('modalPopup'); popup.show(); } 

弹出窗口总是等于null。

最终更新:这是我的最终解决方案(请特别注意使用OnClientClick和OnClick):

       

Saving...

使用这个Javascript函数:

 function showModal() { $find('ShowModal').show(); } 

……这个代码背后:

 protected void btnSaveData_Click(object sender, EventArgs e) { UpdateUserData(GetLoggedInUser()); modalPopup.hide(); } 

试试这个。

创建一个虚拟隐藏字段:

  

在Modal Popup声明中设置TargetcontrolID =“hdnField”。

在btnSaveData_Click事件中,执行以下操作:

 modalPopup.Show(); 

试试这个。 它100%正常工作

                          

服务器端代码

 protected void Btnshow_Click(object sender, EventArgs e) { ModalPopupExtender1.Show(); } protected void BtnHide_Click(object sender, EventArgs e) { ModalPopupExtender1.Hide(); } 

首次尝试:尝试将ButtonID设置为OkControlID标记,然后重试

要么

第二次尝试:通过javascript调用您的事件,点击事件似乎存在一些问题

 
LinkButton

从这个示例中,您可以轻松控制面板显示取决于条件,而不是一旦您单击按钮立即显示面板。

      . .  //Server side code: protected void btnAdd_Click(object sender, EventArgs e) { if( dt.Rows.Count == 0 ) { btnAdd_ModalPopupExtender.Show(); } else { add(); } } 

在后面的代码中,您可以这样做:

 if (true) { var script = @"Sys.Application.add_load(function() { $find('behavoirIDModal').show(); });"; ScriptManager.RegisterStartupScript(this, GetType(), "Show", script, true); } 

改变这个’behavoirIDModal’