gpt4 book ai didi

c# - ASP.NET -> 同步调用 JavaScript 函数

转载 作者:行者123 更新时间:2023-12-03 11:54:31 32 4
gpt4 key购买 nike

我需要从代码隐藏 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
}

最佳答案

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

This link 解决了同样的问题。

关于c# - ASP.NET -> 同步调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25660043/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com