zoukankan      html  css  js  c++  java
  • 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




  • 相关阅读:
    android连接wifi模块
    idea 控制台乱码debug
    线程控制
    jvm 垃圾回收
    java 单例模式
    http报头
    java 构造函数 , 参数传递 , lamda表达式
    mysql 杂识
    spring mvc 配置 拦截器不起作用
    spring mvc 每次请求后是否自动销毁线程
  • 原文地址:https://www.cnblogs.com/weapon/p/2782474.html
Copyright © 2011-2022 走看看