后台执行Jquery代码

页面中如果没用Ajax,cs中运行某段js代码的方式可以是:
Page.ClientScript.RegisterStartupScript(
Page.GetType(),
“”,
“<script>window.open(‘default.aspx’);CloseDialog();</script>”);
如果页面中使用了Ajax,则上述代码即使执行也没有效果。针对这种情况,我们通常采用:
ScriptManager.RegisterStartupScript(
this.Button1,
this.GetType(),
“closeDialog”,
“window.open(‘default.aspx’);CloseDialog();”
true);
第一个参数是注册该客户端脚本的控件Id,试了一下只要是本页面的都行
第二个参数是注册脚本块的控件类型,本控件或this.GetType()都行,typeof(string)也没问题
第三个参数是脚本函数的名字
第四个参数是脚本内容
第五个参数是是否添加脚本标签,如果第四个参数值包含<script></script>,此处为false,否则此处为true.
按钮没在UpdatePanel控件中:
此时直接在后台注册脚本块即可。

<script type="text/javascript">
    function CloseDialog() {
        var dialog = art.dialog.data("closeDialog");
        dialog.close();
    }
</script>
<form id="form1" runat="server">    
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="后台调用js" />
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
</form>
protected void Button1_Click(object sender, EventArgs e)
{
    //CloseDialog();是jquery方法
    ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), "", "alert('审核测试" + this.physicalSiteNameLabel.Text.Trim() + "成功');CloseDialog();", true);
}

按钮在UpdatePanel控件中:
当按钮在UpdatePanel控件中时,如果想在后台注册代码块必须加上<Triggers>部分代码,否则无效。

<script type="text/javascript">
    function CloseDialog() {
        var dialog = art.dialog.data("closeDialog");
        dialog.close();
    }
</script>
<asp:ScriptManager runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="后台调用js" />
    </ContentTemplate>
    <Triggers>        
        <asp:PostBackTrigger ControlID="Button1" />
    </Triggers>
</asp:UpdatePanel>
protected void Button1_Click(object sender, EventArgs e)
{
    //CloseDialog();是jquery方法
    ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), "", "alert('审核测试" + this.physicalSiteNameLabel.Text.Trim() + "成功');CloseDialog();", true);
}

如果在onClick事件中使用该方法注册了两个名称相同的脚本,那第二个脚本函数不会执行。因为脚本管理器使用此字符串来分析是否是一个已经加载过的脚本,如果加载过,将不会再次渲染,所以第二个不会再执行。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值