我想要的是点击按钮,然后代码必须显示模态框,然后代码隐藏继续处理其余部分。
按钮:
<asp:Button ID="Button1" runat="server" Text="Start"></asp:Button>
然后在代码隐藏中 - 将onclick
添加到Button1:
Generate_Button.Attributes.Add("onclick", "shopModalPopup(); return false;")
我有一个Button1.click的事件处理程序:
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
'The process goes here
End Sub
javascript和模态框:
<script>
var grid_modal_options = {
height: 200,
width: 500,
resizable: false,
modal: true
};
function shopModalPopup() {
$("#dialog-form").dialog(grid_modal_options);
$("#dialog-form").parent().appendTo('form:first');
}
</script>
<div id="dialog-form" title="Processing Request" style="display: none;">
<div class="in">
<center><h2> Please wait while we're processing your request. </h2></center>
</div>
</div>
上面的代码确实显示了模式框,但是后来没有处理按钮单击处理程序上的下一个代码。我怎样才能做到这一点?非常感谢你。
答案 0 :(得分:3)
JS onclick处理程序中的return false
将停止发生默认表单操作,因此永远不会调用服务器端ASP.NET方法。
如果删除return false
,则会显示模式对话框,并进行服务器端调用。但是,它不是一个正确的异步调用,它将是一个全面的回发。因此,只要服务器方法完成其业务,页面就会完全刷新。这将具有删除模态对话框的效果(因为页面将再次完全呈现),但我想这可能不是你想要的。您可能希望模式对话框在异步调用完成时向用户显示一些消息,而不刷新页面,对吧?
如果你想要一个正确的异步调用,我建议你在代码隐藏中使用jQuery和[WebMethod]
页面方法。查看this article by Dave Ward以获取有关如何执行此操作的精彩教程。
答案 1 :(得分:1)
为什么不直接将它放在OnClientClick中,如图所示:
<asp:Button ID="Button1" runat="server" Text="Start" OnClientClick="shopModalPopup"></asp:Button>