• 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




  • 相关阅读:
    Java多线程编程核心技术---对象及变量的并发访问(二)
    Java多线程编程核心技术---对象及变量的并发访问(一)
    Java多线程编程核心技术---Java多线程技能
    普通浏览器GET请求与Ajax的GET请求的区别
    【python】-- 面向对象引子、概念
    【python】-- json & pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess
    【python】-- 内置函数、软件目录开发规范(代码编码风格)
    【python】-- 装饰器、迭代器、生成器
    【python】-- 递归函数、高阶函数、嵌套函数、匿名函数
    【python】-- 函数非固定参数,返回值(return)
  • 原文地址:https://www.cnblogs.com/weapon/p/2782474.html
Copyright © 2020-2023  润新知