无法在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没有执行。有人能告诉我代码有什么问题吗?如果你想看更多的代码,请告诉我。提前致谢
如果你有一个更新面板,试试这个:
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。一个事件只执行一个脚本。