最近用.Net做web项目的时候遇到了一些问题,就是很多的页面的处理一样的,不一样的就是我们写的存储过程不同,为了考虑代码的重复利用和可维护性和可

扩展性,于是写了一个对于单据页面的工厂模式,采用界面的继承技术,因为我们写的ASP.net页面的是代码后置的,所以我们继承的时候就继承我们的后置的代码,也就是我们说的XXXX.aspx.cs文件。其实页面的继承和我们普通的类继承一样,只是ASP.net页面的界面是HTML和后置代码共同组成的,所以也有一些不同,好了先进开始我们的ASP.net页面继承之旅:

我在这里总结了一幅在.net环境下用Rational XDE生成的UML图给大家一个直观感性的认识,我先来讲解一些这副图中的类和它们的关系,BillFactory类是我定义的单据工厂它来识别产生那种单据,VirturBillCOM是一个虚拟类(也可以是接口)它定义了一些方法让继承它的类来实现,IssueBillMng_Frm和IssueBill_Frm是页面的后置代码类,负责页面的一些操作比如,按钮状态,调用业务逻辑等,BillInstorageMngList和IssueBillMng分别继承VirturBillCom虚拟类来实现业务处理调用数据存储层等,BillInstorageMngList负责入库单的处理,IssueBillMng负责出库单的处理。BillEntity和BillItemEntity是数据库映射的实体类。BillInstorageMng继承了页面类IssueBillMng_Frm,BillInstorage继承类页面类IssueBill_Frm,大家可以看到,BillInstorageMng类和BillInstorage类由于继承类页面类,所以他们的类中只有一个空的构造函数,其他的都可以由它的父类处理,在这里大家可能要问,这样就可以完成页面的继承了吗?,呵呵,这只是其中的一步,为了达到和父类的页面显示同样的效果,必须把父类中的HTML拷贝到子类的HTML中,这样界面的显示一样了(如果你要改动一下界面可以在子类界面的HTML中改动添加按钮等),但是有个问题是,在.net设计器中拷贝HTML到子类的页面时,进入该子页面的后置代码的时候会自动的添加页面上的服务器控件在变量声明的地方,我们可以想象,这些控件在父类已经存在了而且默认为保护类型为protected 所以子类也可以看到,所以控件就会重复,就很出错的,必须在子类中把父类已经用的控件变量删除掉,如果子类自己想有其他的操作可以自己加入控件,但变量不能和父类重复。这样很简单就完成了页面的继承,大家可以试试,它可以减少很多的重复的代码。

还有就是我想说的就是BillInstorageMngList类和IssueBillMng类,他们都继承VirturBillCom实现了VirturBillCom定义的函数,他们是中间层,所以我们在页面中调用的时候可以直接调用VirturBillCOM,具体真正的实现哪个实例由BillFactory来实现,这样可能还有不明白的,具体的说在IssueBillMng_Frm的构造函数中(页面的构造函数默认是没有的,我们的自己加)声明一个VirturBillCOM 的实例如:mgrObr = BillFactory(this);用工厂来判断实例那个中间层变量来完成不同的工作。这就是简单工厂模式,大家有不明白的可以看看设计模式。好了今天就说到这,有什么不明白的可以在探讨,虽然我的表达可能有些地方不太清楚,大家可以好好看看这副图,是典型的工厂模式图,好啦该下班回家了。祝大家晚间愉快。

作者:moshangchen

ASP.net 中的页面继承实现和通用页面的工厂模式的实现相关推荐

  1. asp.net中, 如何在后台获取访问这个页面的用户的名字?

    asp.net中, 如何在后台获取访问这个页面的用户的名字? 在集成安全认证下, 可以利用以下代码获取: System.Security.Principal.WindowsIdentity wi =  ...

  2. Discuz!NT 中的数据库链接类(重构到抽象类工厂模式)

       在7月份中我曾经写过一篇随笔叫,叫" .NET2.0 框架中的 AbstractFactory 模式 " . 里面主要说了在2.0框架下的数据库链接工厂中新增的几个类,而这几 ...

  3. [导入]在asp.net中利用FileUplad控件从同一个页面上传多个文件

    在页面上导入System.IO类,再使用HttpFileCollection类和Request对象捕获要传送的文件.这样就可以从一个页面上传任意多个文件. <%@ Page Language=& ...

  4. java设计模式工厂模式_Java中的工厂设计模式

    java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...

  5. 【转】ASP.NET中页面传值

    http://www.cnblogs.com/wenly/archive/2008/06/10/1216678.html 一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,    & ...

  6. 一、目前在ASP.NET中页面传值共有这么几种方式:

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,    <form action= "target.aspx" method = "post&q ...

  7. ASP.Net中页面传值的几种方式

    大致概括一下,ASP.NET 页面之间传递值得方式大致可以分为如下几种:Request.QueryString["name"],Request.Form("name&qu ...

  8. ASP.NET中aspx页面runat=server的本质(Essensial of runat=”server” in ASP.NET)

    今天同事问我一个"神奇"的问题,另一个同事"神奇"地找出了问题但无法解释,归咎于一种"习惯"或者"下次注意".现在我把问 ...

  9. 在ASP.NET中指定出错页面,不让代码外泄!

    在ASP.NET中指定出错页面,不让代码外泄!在ASP.NET中原始的出错页面会暴露部分源代码,由此带来了潜在的安全隐患. ASP.NET允许应用程序出错时显示用户指定的页面,方法是在web.conf ...

最新文章

  1. 国内物联网平台初探(七) ——Ablecloud物联网自助开发和大数据云平台
  2. easyui是否容易上手_特色家常菜-清蒸桂鱼,肉质鲜嫩有营养,做法简单容易学...
  3. vue3开发实践笔记
  4. Kconfig文件详解
  5. 归并排序的实现-代码
  6. 占用系统资源测试_高频性能测试面试题15道
  7. Magento事件机制 - Magento Event/Observer
  8. 计算机专业排版有哪些,计算机专业英语词汇(完美排版_大容量打印版).pdf
  9. 诹图系列(2): 堆积条形图
  10. 【课本】【No.2】集合表示法、一维离散变量定义,分布函数为了解决计算时间概率,二项分布,泊松分布,一维连续型分布函数与密度函数
  11. 易语言lol自动接受源码分享以及lolApi相关使用教程
  12. 机器学习中的数学——点估计(三):极大似然估计/最大似然估计(Maximum Likelihood Estimate,MLE)
  13. html页面上不断掉星星,html 页面的星星闪烁 特效 背景 (js案例 )
  14. linux磁盘满了删除docker文件夹,Docker磁盘空间使用分析与清理的方法
  15. 梦幻西游服务器转移中暂时无法登陆,梦幻西游:转服常见问题答疑,赶紧先收藏起来,总会用到...
  16. Excel中如何将文本链接转成跳转链接
  17. 邮件服务器DNS设置-----MX、SPF、DKIM记录详解
  18. python语言是解释型语言-解释型语言python
  19. 新概念三英语学习Unit2
  20. 编写爬取糗事百科信息爬虫代码学习笔记

热门文章

  1. 要想进入顶级数据公司,2020年数据科学10大技能帮你加分
  2. OpenCV中的二进制鲁棒独立基本特征——BRIEF
  3. python基础知识整理 第二节:容器(list tuple dict)
  4. 图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。
  5. 基于深度学习的目标检测综述
  6. 矩阵快速幂+构造方法
  7. Monitor CodeForces - 846D ——二维前缀和
  8. 【机器学习入门】(7) 线性回归算法:原理、公式推导、损失函数、似然函数、梯度下降
  9. Linux的ntp服务起不来,CentOS7/Red Hat7 NTP服务无法开机自启动
  10. 固定旋转_旋转压片机如何正确更换冲模?