我正在使用ASP.NET中的AJAX,并尝试处理一个情况,即asp:button触发javascript方法和codebehind c#方法。为此,我正在使用按钮的onclick和onClientClick属性。我需要进行postback以调用codebehind,但是这会导致javascript不起作用,因为变量已经失去状态。有人能描述如何处理吗?可能使用ajax和异步postbacks?这开始让我有点疯狂!
编辑: 实际上,javascript是用于Google地图(v3),而c#代码是用于提交到SQL数据库。
地图在code-behind中初始化:
编辑: 实际上,javascript是用于Google地图(v3),而c#代码是用于提交到SQL数据库。
地图在code-behind中初始化:
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>
...我认为如果我能让第一个UpdatePanel在按钮点击时进行PostBack,第二个面板不进行PostBack,并且按钮仍然调用CodeBehind,那么它应该可以工作。到目前为止,我还没有成功同时实现这一点。