无法在Aspx页面中从Codebehind运行Javascript代码

本文关键字:Codebehind 运行 Javascript 代码 Aspx | 更新日期: 2023-09-27 18:05:42

嗨,我有一个web表单,我必须从代码隐藏文件调用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没有执行。有人能告诉我代码有什么问题吗?如果你想看更多的代码,请告诉我。提前致谢

无法在Aspx页面中从Codebehind运行Javascript代码

如果你有一个更新面板,试试这个:

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

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

我认为你需要设置updatepanel的updatemode为"always"。或者,如果代码是在按钮单击处理程序中,则可以为updatepanel添加触发器,并在按钮的id后面加上controlid。

<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>

Java Script Code仅在整个程序执行后执行。如果你的c#代码中有任何错误,从代码后面调用的脚本将无法工作。同样,如果你从后面的代码调用Script。一个事件只执行一个脚本。