在等待处理代码的服务器时显示Modalbox

时间:2012-05-01 03:11:24

标签: jquery asp.net modal-dialog

我想要的是点击按钮,然后代码必须显示模态框,然后代码隐藏继续处理其余部分。

按钮:

<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>

上面的代码确实显示了模式框,但是后来没有处理按钮单击处理程序上的下一个代码。我怎样才能做到这一点?非常感谢你。

2 个答案:

答案 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>