脚本管理器注册启动脚本不将脚本添加到页面

时间:2018-08-23 09:23:31

标签: c# asp.net scriptmanager

这让我感到困惑。我有两个按钮:

set "JAVA_OPTS=%JAVA_OPTS% -Dhttps.proxyHost=<IP> -Dhttps.proxyPort=8080"

调用两个不同的函数:

<div class="btn-group" role="group">
    <asp:Button runat="server" ID="RegisterButton" ClientIDMode="Static" OnClick="RegisterButton_Click" Text="register" />
    <asp:Button runat="server" ID="TestButton" ClientIDMode="Static" OnClick="TestButton_Click" Text="testClick" />
</div>

当我单击protected void RegisterButton_Click(object sender, EventArgs e) { ... Register(user) } private void Register (user) { ... RegisterResultResultJson(regRes); } private void RegisterResultResultJson(RegResult regResult) { string jsonString = Helpers.Serializer.JsonSerializer.ToJSON(regResult); string script = ";RegisterResult(" + jsonString + ");"; ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true); } protected void TestButton_Click(object sender, EventArgs e) { string script = ";console.log('klik');"; ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true); } 时,一切正常,我可以在源日志和控制台日志“ klik”中看到脚本。但是,当我单击TestButton时,什么都没有发生。当我将断点放入代码中时,复制RegisterButton并将其粘贴到控制台中,JS script可以正常工作。

1 个答案:

答案 0 :(得分:1)

  

但是当我单击RegisterButton时没有任何反应

发生的事情是当您执行以下代码时:

string script = ";RegisterResult(" + jsonString + ");";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "RegisterStartupScript", script, true);

这只是将脚本代码粘贴到网页中,而不调用功能

<script type="text/javascript">
  //<![CDATA[
 ;RegisterResult(yourDatacomesHere);//]]>
</script>

因此,如果您要调用该函数,而不是将其粘贴到script标签中,只需将函数调用为:

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "registerButtonClick", "RegisterResult("+jsonString+")", true);

或者您可以将代码绑定到IIFE中。

string script = "(function(){RegisterResult(" + jsonString + ");})()";
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "registerButtonClick", script, true);

注意:如果可能的话,以供将来参考,请尝试使用WebMethods,它可以从客户端调用(使用ajax或简单的javascript),如果成功或失败,则可以将值返回给客户端功能。