本文内容

  • 概述
  • 演示自定义 TreePanel 控件
  • 运行结果
  • 说明

 

概述

当我最开始使用 VS 开发 ASP.NET Web 应用程序时,使用最多的就是用户控件(.ascx)。它的方便在于,可以将界面分割成一个个小的功能模块,也就是利用 ASP.NET 自带的控件组合成一个新的控件,然后在需要的界面“拖”进去就行。

这种方式,不仅对后台方便,对前台也是。比如,对于页面,以及页面的任何一个功能区域,我们都可以分成顶部、底部和中间内容部分,那么就可以对 CSS 做统一设置。

现在我使用 Ext.Net,虽然其 Demo 提供了 SimpleTask Demo,演示了如何自定义、封装一个 Ext.Net 控件,看上去很不错。但一是不熟悉,二是使用用户控件(.ascx)习惯了,而且似乎用户控件足够现在的项目了。

但某天,当我偶然用 Yahoo YSLOW 插件测试我的页面时,突然发现我的用户控件竟然出现了好几个 404 错误。虽然页面在运行时完全正常。我将用户控件需要的脚本,以外部文件方式添加到用户控件,不想将外部脚本在页面里引用,将来不好维护,同时,也不想直接将脚本代码嵌入到用户控件里。毕竟,外部文件可以被浏览器缓存,而嵌入代码则不能。因为,页面和用户控件初始化顺序的问题。

404 错误是个恶心的错误。它能让浏览器做很多无用功,消耗响应时间。我还是改程序吧~~~呵呵,针对目前的这个,用户控件的确存在一些问题。

本文演示如何利用 Ext.Net 封装一个自定义控件。它通常由两个文件、三部分组成:控件类文件和外部脚本文件。其中,控件类文件是一个分部类,分别实现控件的 UI 代码和逻辑代码。UI 代码负责创建控件标记;逻辑代码创建控件的客户端事件和服务器端事件。外部脚本文件用于在客户端操作控件。

 

演示自定义 TreePanel 控件

先看看封装后,在页面中引用自定义控件,代码如下:

 
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<%@ Register Assembly="ExtNetTreePanleCustomControl" Namespace="ExtNetTreePanleCustomControl.MyCustomControl"
    TagPrefix="MyControl" %>
<!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 runat="server">
    <title></title>
    <ext:ResourcePlaceHolder ID="ResourcePlaceHolder1" runat="server" Mode="ScriptFiles" />
 
    <script src="resources/myTreePanel.js" type="text/javascript"></script>
 
</head>
<body>
    <form id="form1" runat="server">
    <ext:ResourceManager ID="ResourceManager1" runat="server" InitScriptMode="Linked"
        RemoveViewState="true" IDMode="Explicit" />
    <MyControl:MyTreePanel ID="MyTreePanel1" runat="server" />
    </form>
</body>
</html>

相关文章: