zoukankan      html  css  js  c++  java
  • Ext.Net 1.2.0_Ext.Net.ResourceManage 如何初始化页面资源

    本文内容

    • 引入——对比页面在使用或不使用 Ext.Net 控件的区别
    •     没引用 Ext.Net
    •     引用了 Ext.Net
    • Ext.Net.XControl 和 Ext.Net.ResourceManager
    • 修改记录

    引入——对比页面在使用或不使用 Ext.Net 控件的区别

    本文旨在初步分析 Ext.Net 初始化的过程。也就是,不加入 Ext.Net.ResourceManager,与加入 Ext.Net.ResourceManager 之后,页面内容的区别。本文用 FireFox 查看源文件。

    • 没引用 Ext.Net

    新建一个没有任何 Ext.Net 控件的页面。代码如下所示:

    图 1 没引用 Ext.Net

    图 1 没引用 Ext.Net

    那么,用 FireFox 查看源文件如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head><title>
     
    </title></head>
    <body>
        <form name="form1" method="post" action="WebForm1.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZHGyYm3CSBB0uH2DAOtZCHXgBYSj" />
    </div>
     
        </form>
    </body>
    </html>
    • 引用了 Ext.Net

    新建一个添加 Ext.Net.ResourceManager 的页面,如下所示:

    图 2 引用了 Ext.Net

    图 2 引用了 Ext.Net

    用 FireFox 查看源文件如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <link rel="stylesheet" type="text/css" href="/extjs/resources/css/ext-all-embedded-css/ext.axd?v=17083" />
    <title>
     
    </title>
        <script type="text/javascript" src="/extjs/adapter/ext/ext-base-js/ext.axd?v=17083"></script>
       1:  
       2:     <script type="text/javascript" src="/extjs/ext-all-js/ext.axd?v=17083">
       1: </script>
       2:     <script type="text/javascript" src="/extnet/extnet-core-js/ext.axd?v=17083">
       1: </script>
       2:     <script type="text/javascript" src="/extnet/locale/ext-lang-zh-CN-js/ext.axd?v=17083">
       1: </script>
       2:     <script type="text/javascript">
       3:     //<![CDATA[
       4:         Ext.net.ResourceMgr.init({id:"ResourceManager1",BLANK_IMAGE_URL:"/extjs/resources/images/default/s-gif/ext.axd",aspForm:"form1",theme:"blue"});Ext.onReady(function(){Ext.QuickTips.init();});
       5:     //]]>
       6:     
    </script>
       1:  
       2: </head>
       3: <body>
       4:     <form name="form1" method="post" action="WebForm2.aspx" id="form1">
       5: <div>
       6: <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
       7: <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
       8: <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkzNTgyMzk4N2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFEFJlc291cmNlTWFuYWdlcjFtzMaC7eCHSStptAvkxOouI11aMQ==" />
       9: </div>
      10:  
      11: <script type="text/javascript">
      12: //<![CDATA[
      13: var theForm = document.forms['form1'];
      14: if (!theForm) {
      15:     theForm = document.form1;
      16: }
      17: function __doPostBack(eventTarget, eventArgument) {
      18:     if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
      19:         theForm.__EVENTTARGET.value = eventTarget;
      20:         theForm.__EVENTARGUMENT.value = eventArgument;
      21:         theForm.submit();
      22:     }
      23: }
      24: //]]>
    </script>
     
     
    <div>
     
        <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgLl9M/1DQLk1b+VAvPeIxQnrPccjp0QWBmQuJLa1QHw" />
    </div>
        
        </form>
    </body>
    </html>

    区别很明显。Ext.Net.ResourceManager 向页面添加它的内置 CSS 和 Ext js 核心脚本。这些 CSS 和 Ext js 文件,作为 Ext.Net 程序集的嵌入资源,通过 ASP.NET 的 WebResource 方式使用。Ext.Net 与 Ext js 的最大区别是 Ext.Net 为 Ext js 提供了一个 IDE 环境。为开发人员省去了相当大一部分编写脚本的工作。

    Ext.Net.XControl 和 Ext.Net.ResourceManager

    因此,Ext.Net.ResourceManager 是 Ext.Net 开始的一部分,它通过 ASP.NET 的 WebResource 方式加载程序集的嵌入资源,如 CSS 、JS 和图像等。这些资源都位于 Ext.Net 项目的 Build 目录。Ext.Net.ResourceManager 类位于 Ext.Net 项目的 Core 目录,它继承了 XControl 类。Core 目录中的类是 Ext.Net 核心类。

    图 3

    图 3

    顾名思义,ResourceManager 当然是 Ext.Net 管理资源(包括 CSS 和 JS )的重要类,他不仅可以将 Ext.Net 的嵌入资源加入到页面,也可以像 ASP.NET 一样在开发阶段向页面注册自定义的脚本等。ClientStyleItem 和 ClientScriptItem 类是表示嵌入资源的两个类,用于从 Ext.Net 中获得嵌入资源路径等信息,它们聚合到 ResourceManager 类中。

    当把 Ext.Net.ResourceManager 控件放入页面后,它会随着网页一起被实例化,同时会执行 OnInit、OnLoad、Render 等相关事件,从而初始化 Ext.Net。如果用 VS 查看该类的相关信息,并将修饰符为 Internal 和 Private 的方法隐藏,这些方法从类的实例中不能访问的方法我们暂时不用关心,如下所示:

    a

    图 4

    会看到如下事件。

    图 5

    图 5

    其中,

    OnInit、OnLoad、OnPreRend、Render 事件完成了页面的初始化,而且你会在 Render 事件中找到它调用了 GetWebResourceUrl() 和 Build 开头的方法,将程序集内嵌资源,包括 CSS 和脚本,添加到页面。

    无论是 Ext.Net.ResourceManager,还是它的父类 XControl,都是分部类,分别在好几类中实现。如下所示:

    图 6 Ext.Net.XControl 类的实现

    图 6 Ext.Net.XControl 类的实现

    图 7 Ext.Net.ResourceManager 类的实现

    图 7 Ext.Net.ResourceManager 类的实现

    注意:

    虽然文件名与实际类名不同,而且位置也不同,但实现的类都是同一个类,这是为了更好地说明此处主要实现了该类的哪个方面功能。其中,文件名与类名相同的文件,是这个类的主要文件。

    修改记录

    • 第一次 2011-12-21 [UPDATE] Ext.Net.XControl 和 Ext.Net.ResourceManager 小节
  • 相关阅读:
    严重: Parse error in application web.xml file at jndi:/localhost/ipws/WEBINF/web.xml java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml
    Failed to install .apk on device 'emulator5554': timeout解决方法
    java.lang.NoClassDefFoundError:org.jsoup.Jsoup
    Conversion to Dalvik format failed: Unable to execute dex:解决方法
    apache Digest: generating secret for digest authentication ...
    Description Resource Path Location Type Project has no default.properties file! Edit the project properties to set one.
    android service随机自启动
    MVC3 安装部署
    EF 4.3 CodeBased 数据迁移演练
    SQL Server 2008开启sa账户
  • 原文地址:https://www.cnblogs.com/liuning8023/p/2294017.html
Copyright © 2011-2022 走看看