ASP.NET->;对javascript函数的同步调用

本文关键字:函数 同步 调用 javascript NET- gt ASP | 更新日期: 2023-09-27 18:20:32

我需要从代码背后的ASP.NET(C#)同步调用Javascript函数。

我尝试过ScriptManager.Registerclient,但由于它是异步的,所以这不好。在返回值(更新UpdatePanel)以检查操作是否有效之前,我需要对javascript进行一些测试。

例如:

myButton_click(object sender, EventArgs args)
{
  <callJavascriptSynchronous>
  if (MyHiddenField.Value == "true")
     //Do
else
   //Don't
}

MyHiddenField位于UpdatePanel中。对于javascript函数:

function javascriptFoo(myInteger)
{
  var returnValue = window.external.TestInteger(myInteger);
  document.getElementById('<%=MyHiddenField.ClientID%>').value = returnValue;
}

UpdatePanel如下所示:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:HiddenField ID="MyHiddenField" runat="server" ClientIDMode="Static" Value="" Visible="false"/>
</ContentTemplate>

对同步呼叫有什么建议吗?

谢谢!

编辑:添加完整代码:

MyPage.aspx:

function javascriptFoo(myInteger)
{
  var returnValue = window.external.TestInteger(myInteger);
  document.getElementById('<%=MyHiddenField.ClientID%>').value = returnValue;
}
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:HiddenField ID="MyHiddenField" runat="server" ClientIDMode="Static" Value="" Visible="false"/>
</ContentTemplate>

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">

MyPage.aspx。cs:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
   ScriptManager.RegisterStartupScript(UpdatePanelContext, UpdatePanelContext.GetType(), "AlertTest", "AlertTest()", true);
   string sVal = HiddenFieldContext.Value;
   if (sVal == "true") //do
   else //don't
}

ASP.NET->;对javascript函数的同步调用

当您在按钮的点击事件中时,您已经离开了前端,无法跳回进行函数调用。在客户端,单击按钮(阅读关于OnClientClick事件的信息)后,首先执行函数,然后通过回发返回结果。

此链接解决了相同的问题。