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




  • 相关阅读:
    IEnumerable<T>转DataTable的几种方法
    关于IAsyncResult接口的CompletedSynchronously属性
    为WCF增加UDP绑定(储备篇)
    WPF自定义集合控件概述与遇到的问题
    WPF嵌套模板引发的血案
    为WCF增加UDP绑定(实践篇)
    Uva 10557 XYZZY(DFS+BFS)
    Uva 572 Oil Deposits(DFS)
    Uva 532 Dungeon Master(三维迷宫)
    Uva 10004 Bicoloring
  • 原文地址:https://www.cnblogs.com/weapon/p/2782474.html
Copyright © 2011-2022 走看看