如果页面中不用Ajax,cs中运行某段js代码方式可以是:

Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>window.open('RefrigeratoryInfoList.aspx')</script>");

如果页面中使用了Ajax ,则上述代码即使执行也无效果。对这种情况我们通常采用:

ScriptManager.RegisterStartupScript(this, typeof(string), "", "alert('成功!');javascript:location='RefrigeratoryInfoList.aspx';", true);

其中第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。 第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题. 第三个脚本函数的名字,随便起。 第四个是脚本内容。 第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。

注意:aspx代码是这样的

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<table id="TableView" class="crop_table">
<tr>
<td class="crop_table_lable">
日期<span style="color: #F00;">*</span>
</td>
<td>
<asp:TextBox ID="txtDate" runat="server" Width="200px" CssClass="crop_table_text"
onclick="WdatePicker({el:'txtDate',lang:'zh-cn',readOnly:true,dateFmt:'yyyy-MM-dd'})"></asp:TextBox>
<asp:RequiredFieldValidator ID="RFV1" runat="server" ControlToValidate="txtDate"
ErrorMessage="必填项"></asp:RequiredFieldValidator>
</td>
<td class="crop_table_lable">
产品名称<span style="color: #F00;">*</span>
</td>
<td>
<asp:DropDownList ID="ddlProductionName" runat="server" DataTextField="CHP_Name"
DataValueField="CHP_ID" OnSelectedIndexChanged="ddlProductionName_SelectedIndexChanged"
AutoPostBack="True">
</asp:DropDownList>
</td>
</tr>
<tr>
<td height="" colspan="" align="center">
<asp:Button ID="btnAdd" runat="server" Text="·提 交·" CssClass="crop_table_btn" onmouseover="this.className='crop_table_btn_mouseover'"
onmouseout="this.className='crop_table_btn'" OnClick="btnAdd_Click" />
<input name="Submit" type="reset" value="·重 填·" class="crop_table_btn ml50" value="取消修改"
onmouseover="this.className='crop_table_btn_mouseover ml50'" onmouseout="this.className='crop_table_btn ml50'" />
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>

另外,js无法干涉cs代码。所以一旦脚本注册成功,js和cs代码会互不相干的各自运行。

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

ScriptManager和ClientScriptManager的命名空间均是System.Web.UI。

      ClientScript获取用于管理脚本、注册脚本和向页面添加脚本的ClientScriptManager对象,用于管理普通的Script。ClientScript是ClientScriptManager的对象,ClientScriptManager是类。

ScriptManager是用于管理AJAX脚本库和脚本文件。

ScriptManager适用在特殊的场合,其实可以通过寻找控件的parent,判断是否有updatepanel,如果有就用ScriptManager;没有的话当然用ClientScript,避免每次postback操作时控件都要进行资源文件的注册。也就是说 是否兼容ajax的问题,ScriptManager兼容于ajax,在ajax updatepanel中使用ClientScript是无效的。ScriptManager.RegisterStartupScript 适用于无刷新后台调用JS。 ClientScript.RegisterStartupScript  普通的后台调用前端的JS更适用。

JavaScript 之 ScriptManager.RegisterStartupScript的应用的更多相关文章

  1. (转)ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 方法

    ScriptManager.RegisterStartupScript方法 如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStartu ...

  2. ScriptManager.RegisterStartupScript

    如果页面中不用Ajax,cs中运行某段js代码方式可以是:Page.ClientScript.RegisterStartupScript(Page.GetType(), "", & ...

  3. 通过使用ScriptManager.RegisterStartupScript,呈现后台多次使用alert方法

    在前台HTML中加入alert或者confirm,相信大家已经非常熟悉并且经常使用: <div onclick="alert('hello')">按钮1</div ...

  4. System.Web.UI.ScriptManager.RegisterStartupScript(语句末尾加分号,不然可能会造成语句不执行)

    System.Web.UI.ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "testKey", &q ...

  5. ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 区别

    ScriptManager.RegisterStartupScript方法 如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStartu ...

  6. ScriptManager.RegisterStartupScript()方法和Page.ClientScript.RegisterStartupScript() 方法详解

    ScriptManager.RegisterStartupScript()方法 如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStar ...

  7. ScriptManager.RegisterStartupScript失效的解决方案

    在项目中一个页面使用System.Web.UI.ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "success ...

  8. 关于ScriptManager.RegisterStartupScript 摘录

    //ScriptManager.RegisterStartupScript 方法 (Control, Type, String, String, Boolean) public static void ...

  9. c#、sql、asp.net、js、ajax、jquery大学知识点笔记

    <table cellSpacing="0" cellPadding="0" width="609" height="470 ...

随机推荐

  1. WCF实现多个服务

    本篇体验使用WCF实现2个服务.一个使用HTTP通讯,一个使用TCP通讯. 大致思路是: → 创建WCF服务以及接口,写2个接口→ 实现2个接口→ 为WCF创建一个控制台项目的宿主,配置App.con ...

  2. oracle监听1067错误的处理

    一,oracle监听1067错误的处理修改oracle安装目录D:\DataBase\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\下的 listener.ora和 ...

  3. dll 显示调用

    今天尝试写了一个简单的C++DLL,并且用另一个CPP调用它,啥都不说,先贴代码 1.DLL(冒泡算法) extern "C" 必须最左 _declspec(dllexport)和 ...

  4. linux下生成https的crt和key证书

    今天在配置kibana权限设置时,kibana要求使用https链接. 于是总结了一下linux下openssl生成 签名的步骤: x509证书一般会用到三类文,key,csr,crt   Key 是 ...

  5. FZU2169:shadow(最短路)

    Problem Description YL是shadow国的国王,shadow国有N个城市.为了节省开支,shadow国仅仅有N-1条道路,这N-1条道路使得N个城市连通. 某一年,shadow国发 ...

  6. python-opencv旋转图像,保持图像不被裁减

    python-opencv旋转图像,保持图像不被裁减   import cv2 from math import * def remote(img,degree): #degree左转 img = c ...

  7. SVG.Js事件示例,简单绑定拖动操作

    一.代码: var draw = SVG('container').size(300, 300); draw.style({ border: '1px solid red' }); var group ...

  8. 微信二维码扫描无法下载APK文件的解决办法

  9. iOS:创建带logol的二维码

    //二维码生成 实质: 把字符串转变为 图片 // 需要 coreImage框架, 已经包含在了 UIKit框架里面 //MARK: 二维码中间内置图片,可以是公司logo + (UIImage *) ...

  10. iOS:仿写探探App动画

    一.简单介绍 探探动画比较新颖,这也是它在众多交友软件中火热的一个特色.实现这种动画的方式可以有两种方式实现: 1.使用转场动画实现  2.使用CollectionView自定义布局实现, 此处我提供 ...