我需要从代码隐藏的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
}
答案 0 :(得分:1)
当你进入按钮的点击事件时,你已经离开了前端而无法跳回功能调用。按下按钮(首先阅读OnClientClick事件),首先执行函数clientide,然后使用回发返回结果。
This link解决了同样的问题。