zoukankan      html  css  js  c++  java
  • 【Asp.Net】自定义控件?用户控件?还是新型的复合控件?

    博客园的博客开通三天了,也没有任何文章和随笔。

    今天就赶紧发第一篇随笔吧。

    希望能够启发一些人。

    大家都知道Net里面的用户控件和自定义控件吧。

    其实不管是用户控件也好,自定义控件也好,都有他们各自的好处,也有他们各自的坏处。

    下面就复制粘贴来大略地对比下:

    -------------------------

        用户控件                       自定义控件

    用 .ascx 文件表示            用 .DLL 文件表示
    不出现在工具箱中             出现在工具箱中
    支持缓存                        不支持缓存
    提供有限的支持                提供全面支持

    -------------------------

    大家能看出些什么么?

    我今天在这里既不说他们的表现形式和出现的地方,

    也不说他们支不支持缓存和使用时支持的大小。

    今天我在这里要说的是它们的最大优劣势:

    ----------------------------

                         用户控件                            自定义控件

    优势         便于维护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文件。

    -----------------

    更详细的实现代码暂不公开。

    希望大家发挥自己的才能,去完善这个设计。

    同时也希望能和大家多多交流,加个好友和关注之类,共享优秀的设计思想和框架。

    -----------------

    设计结果图

  • 相关阅读:
    第6天c#基础结构体和数组
    第5天c#基础for循环和enum
    第4天c#基础switch和while循环
    第3天c#按位运算和增减buff
    第2天c#基础
    第1天c#基础语法
    背景图层填充底色调密度
    如何在运行里添加命令
    网站
    BAT设置
  • 原文地址:https://www.cnblogs.com/yomho/p/2953132.html
Copyright © 2011-2022 走看看