asp.net向页面注册脚本

相关概念


在 .aspx.cs 页面中,输入这四个东西:Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager,均会出提示,表示它们均可用,那么它们有什么区别呢?

Page.ClientScript 与 ClientScript 的关系

这二者实际上是一个东西,后者只是省略了 Page。都是获取用于管理脚本、注册脚本和向页添加脚本的 ClientScriptManager 对象。

Page.RegisterClientScriptBlock 与 Page.RegisterStartupScript(也可省略 Page),微软已经不推荐这样写,而应该是 Page.ClientScript.RegisterClientScriptBlock 或Page.ClientScript.RegisterStartupScript(同样,这里的Page也可省略),

ScriptManager 与 ClientScriptManager 区别

他们的名称空间均是 System.Web.UI。

  • ScriptManager 是用于管理 AJAX 脚本库和脚本文件;
  • ClientScriptManager 用于管理普通的 script,就比如向客户端输出一个 <script>alert("");</script>。

ClientScript 与 ClientScriptManager 区别

ClientScriptManager 是类,ClientScript 是 ClientScriptManager 的对象。

五个方法


RegisterClientScriptBlock、RegisterClientScriptInclude、RegisterStartupScript、RegisterOnSubmitStatement、RegisterClientScriptResource

重点:执行这些方法必须的页面必须有<form runat="server"></form>

 
aspx.cs部分:
1.ClientScript.RegisterClientScriptBlock(this.GetType(),"ScriptBlock","<script>alert('RegisterClientScriptBlock');</script>");
2.ClientScript.RegisterClientScriptInclude(this.GetType(),"ScriptInclude","RegisterClientScriptInclude.js");
3.ClientScript.RegisterStartupScript(this.GetType(),"StartupScript","<script>alert('RegisterStartupScript');</script>");
 
产生位置:
<html >
<head>
    <title></title>
</head>
<body>
    <form >
    <script>alert('RegisterClientScriptBlock');</script>
   <script src="RegisterClientScriptInclude.js" type="text/javascript"></script>
      <div>
       </div>
   <script>alert('RegisterStartupScript');</script>
    </form>
</body>
</html>
 
RegisterClientScriptBlock 将脚本代码写在前 <form> 之后。
RegisterStartupScript 将代码写在 </form>(注意是结束标签)之前。
RegisterClientScriptInclude 用于产生一个 <script src="..." 这样的代码。
RegisterOnSubmitStatement 添加执行以响应网页 onsubmit 事件的 JavaScript。该脚本在页面提交前执行并提供取消提交的机会。该语句在提交 HtmlForm 时执行。
RegisterClientScriptResource 也是产生一个 <script src="..." 这样的代码,但是,它的 src 中不是直接跟的 js 文件,而是 /WebResource.axd?... 这样的东西。
例:ClientScript.RegisterClientScriptResource(this.GetType(), "js/common.js");
上面生成的 script 标签的 src 对应的地址就是形如 /WebResource.axd?... 的,等于:ClientScript.GetWebResourceUrl(this.GetType(), "js/common.js")。
 
上面提到了 WebResource.axd,它并不是您网站中实际存在的一个文件,它是一个映射出来的,直接在浏览器中输入地址访问是找不到的。实际上在这里用 WebResource.axd 并没有什么多大意义,其正有效的用法请参照:http://support.microsoft.com/kb/910442(机器翻译的,有点拙)。
 
RegisterClientScriptInclude、 RegisterClientScriptResource、RegisterClientScriptBlock 都是在 body 最前面添加脚本(<form>之后),他们三个之间就没有优先级了,谁在前面谁就先执行。
 
上述方法除RegisterClientScriptResource 外都有一个方法判断客户端脚本是否已存在,从而避免不必要地添加脚本的尝试。
RegisterClientScriptBlock 方法用Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), "myName")判断
RegisterClientScriptInclude 方法用ClientScript.IsClientSecriptIncludeRegistered(this.GetType(), "myMessage")
RegisterStartupScript 方法用 Page.ClientScript.IsStartupScriptRegistered("welcome")
RegisterOnSubmitStatement 方法用 IsOnSubmitStatementRegistered
-----------------------------------------------------------------------------------------------------------------------

MSDN  ClientScriptManager 类

http://msdn.microsoft.com/zh-cn/library/0skaxdwf(v=vs.80).aspx




原文地址:https://www.cnblogs.com/weapon/p/2782474.html