c# - asp :button click 上的 ASP.NET 异步回发

标签 c# asp.net ajax postback asynchronous-postback

我在 asp:net 中使用 AJAX,并试图处理 asp:button 触发 javascript 方法和代码隐藏 c# 方法的情况。为此,我为按钮使用了 onclick 和 onClientClick 属性。我需要进行回发才能调用代码隐藏,但是此回发会导致 javascript 无法工作,因为变量已丢失状态。谁能描述如何处理这个?可以使用 ajax 和异步回发吗?这让我有点发疯了!

编辑: javascript 实际上用于 google-map (v3),c# 代码用于提交到 sql 数据库。

map 在代码隐藏中初始化:

protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack) {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "onload", "initialize_map();", true);
            submitButton.Command += new CommandEventHandler(this.submitButton_Click);
        }
    }

这里是一些相关的代码:

<asp:UpdatePanel runat="server" ID="Form" UpdateMode="Conditional">
<ContentTemplate>

(...form stuff...)

<asp:Button ID="submitButton" runat="server" Text="Submit" ValidationGroup="NewCallFormSubmit" OnClientClick="calcRoute(); return false;" onclick="submitButton_Click" />

</ContentTemplate>
</UpdatePanel>

<asp:UpdatePanel runat="server" ID="DisplayUpdatePanel" UpdateMode="Conditional">
<ContentTemplate>

 <h1>
  Pick-Up and Drop-Off Locations
  </h1>
     <!-- Map Layout -->
     <div id="map_canvas" style="width: 500px; height: 500px;"></div>                          

</ContentTemplate>
</asp:UpdatePanel>

...我认为如果我可以让第一个更新面板在单击按钮时回发,第二个面板不回发,并且按钮仍然调用代码隐藏,那将是可行的。到目前为止,这一切同时发生还没有运气。

最佳答案

如果您只想在 OnClick(服务器)代码之前运行 OnClientClick(客户端)代码,请尝试以下操作:

ASP.NET

<asp:Button ID="btn_mybutton" runat="server" Text="MyButton" OnClientClick="return JSFunction();" OnClick="CFunction"/>

Javascript

<script type="text/javascript">
    function JSFunction() {
        alert('Some JavaScript stuff');
        return true; 
    }
</script>

C#

protected void CFunction(object sender, EventArgs e)
{
    // Some server code
}

JavaScript 函数首先执行并在执行服务器代码之前返回。

关于c# - asp :button click 上的 ASP.NET 异步回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874697/

相关文章:

javascript - AJAX 将变量从 javascript 传递到 PHP

c# - razor 页面上的 Dropzone 返回 400 状态代码

c# - 551 发件人地址对您的登录无效

c# - 逻辑删除后应用程序再也不会成功启动。没有抛出异常

javascript - Google Analytics 代码应该在母版页中还是在 asp.net 的每个页面中?

c# - 无法使用 IDataReader 读取值

php - X-Requested-With header 服务器检查是否足以防止 ajax 驱动的应用程序的 CSRF?

javascript - 在ajax加载的内容上加载jquery循环

c# - 为什么我的干扰器示例这么慢?

c# - 如何从多个相似序列中选择最后一组串联序列