【Asp.Net】自定义控件?用户控件?还是新型的复合控件?
博客园的博客开通三天了,也没有任何文章和随笔。
今天就赶紧发第一篇随笔吧。
希望能够启发一些人。
大家都知道Net里面的用户控件和自定义控件吧。
其实不管是用户控件也好,自定义控件也好,都有他们各自的好处,也有他们各自的坏处。
下面就复制粘贴来大略地对比下:
-------------------------
用户控件 自定义控件
-------------------------
大家能看出些什么么?
我今天在这里既不说他们的表现形式和出现的地方,
也不说他们支不支持缓存和使用时支持的大小。
今天我在这里要说的是它们的最大优劣势:
----------------------------
用户控件 自定义控件
优势 便于维护UI的HTML代码 便于封装
劣势 不便于封装 难于维护UI的HTML代码
----------------------------
从上面的总结就可以看出:用户控件和自定义控件是互补的。
那么,我们在开发的时候,能否让他们取长补短,
设计出一种用户控件和自定义控件的结合体呢?
这样我就可以让用户控件部分负责维护该结合体的UI部分;
而自定义控件部分负责维护该结合体的业务逻辑部分。
答案是肯定的。
请看下列代码:
1 public abstract class CoalitionControl : Control, INamingContainer 2 { 3 public abstract string CoalitionUIFileName{get;set;} 4 protected override void OnLoad(EventArgs e) 5 { 6 this.Controls.Add(this.Page.LoadControl(this.CoalitionUIFileName)); 7 } 8 }
上面的代码是一个初步的结合体控件。
其中CoalitionUIFileName是一个用户控件路径,指向一个ascx文件。
当然要指出的一个缺点是:
把结合体控件从工具箱中拖到web可视化窗体后,不能即时查看结合体控件的布局,
那么如果要想查看布局,就必须去查看动态引入的ascx文件。
-----------------
更详细的实现代码暂不公开。
希望大家发挥自己的才能,去完善这个设计。
同时也希望能和大家多多交流,加个好友和关注之类,共享优秀的设计思想和框架。
-----------------
设计结果图