无法在Aspx页面中运行Code Behind的Javascript代码

时间:2014-05-28 06:29:21

标签: c# javascript asp.net ajax

您好我有一个网络表单,我必须从codebehind文件中调用javascript函数。在我向页面添加更新面板之前,它工作正常。 我使用的代码是

Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "OpenExe()", true);

我研究了一下,我发现如果我们在页面中添加一个scriptmanager / update面板,我们必须使用

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "Sample", "OpenExe()", true); 

我用过这个,我也用过

System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append(@"<script language='javascript'>");
        sb.Append(@"var cmdShell = new ActiveXObject('WScript.Shell');");
        sb.Append(@"var myPath = '\'C:\\Temp\\stacks.exe\\'');");        
        sb.Append(@"</script>");

        if (!ClientScript.IsStartupScriptRegistered("JSScript"))
        {
            ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
        }

我也试过

ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(UpdatePanel), "Sample", "OpenExe()", true);

但是javascript没有执行。有人能告诉我代码可能有什么问题吗?如果您想查看更多代码,请告诉我。提前谢谢

3 个答案:

答案 0 :(得分:1)

如果您有更新面板,请单击此操作:

ScriptManager.RegisterStartupScript(yourupdatepanel, this.GetType(), "Sample", "OpenExe()", true);

将updatepanel控件ID放在第一个参数

答案 1 :(得分:0)

我认为您需要将updatepanel的updatemode设置为“always”。 或者如果代码是按钮单击处理程序,您可以为updatepanel添加触发器,其中controleid attr是按钮的id。

<asp:UpdatePanel ID="upnlDetailsScratchCard" runat="server"> <ContentTemplate> </ContentTemplate> <Triggers><asp:PostBackTrigger ControlID="buttonID" /> </Triggers> </asp:UpdatePanel>

<asp:UpdatePanel ID="upnlDetailsScratchCard" runat="server" UpdateMode="Always">
<ContentTemplate>
</ContentTemplate>

答案 2 :(得分:-1)

Java脚本代码仅在整个程序执行后执行。如果你的C#代码中有任何错误,那么从Code调用的脚本将无效。如果你从你的代码中调用Script,那么也是如此。只为一个事件执行一个脚本。