0

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

按钮:

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

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

4

2 回答 2

3

return false您的 JS onclick 处理程序中,将停止执行默认表单操作,因此您的服务器端 ASP.NET 方法将永远不会被调用。

如果删除return false,则将显示模式对话框并进行服务器端调用。但是,它不会是一个适当的异步调用,它将是一个完整的回发。因此,每当服务器方法完成其业务时,页面都会进行完全刷新。这将具有删除您的模态对话框的效果(因为页面将再次完全呈现),但我想这可能不是您想要的。您可能希望模式对话框在异步调用完成时向用户显示一些消息,而不刷新页面,对吧?

如果您确实需要适当的异步调用,我建议[WebMethod]您在代码隐藏中使用 jQuery 和页面方法。查看Dave Ward的这篇文章,了解如何执行此操作的精彩教程。

于 2012-05-01T11:22:45.660 回答
1

为什么不直接放在一个OnClientClick中,如图:

<asp:Button ID="Button1" runat="server" Text="Start" OnClientClick="shopModalPopup"></asp:Button>
于 2012-05-01T05:07:55.800 回答