继续上一篇《ASP.NET开发,从二层至三层,至面向对象http://www.cnblogs.com/insus/p/3822624.html 。我们了解到怎样把自己的程序由二层变为三层。本篇我们将学会在asp.net 面向对象编程。

真正来说,我们不应该直接在.aspx.cs中new一个BizBase类。正确的做法,是创建一个与.aspx.cs有直接关系的对象。如Item对象。根据数据库表的设计,它有三个字段,因此我们在这个类中创建三个property:

下面我们分别对.aspx.cs的好几个方法,函数再次重构,先看Data_Binding(),把下图中#44至#49行代码移至Item类,并创建为一个返回DataTable的GetAll()函数。

我们就可以解决刚才所提及的问题,是在Item类中new BizBase类,而不是在.aspx.cs去。更好地解耦合。这样,我在.aspx.cs的Data_Binding()方法重构为:

在这里,我们已经是new Item()了。下面是重构添加记录的方法,把一些相关的代码移至Item类中,这个方法有两步,一是判断,二是插入:

在.aspx.cs的添加按钮的click事件,就可以重构为:

现在我们开始把删除事件的程序,重构至Item类别中去,创建一个Delete()方法:

GridView删除事件,重构之后,成了这样子:

这完全是使用对象来实现。也就是对象本身的property和方法。具体property或是方法是怎样运作,此时无需多关心。达到了封装的效果。

最后一个地方重构的,就是获取标量值的方法,在Item对象中,创建一个返回string值函数GetDescriptionByItemNbr(),就两行代码之事:

被注释掉的代码,就是原来在.aspx.cs的代码。

经过一系列的搬来移去,删除所有注释之后,得到一个完整的Item对象:

结果原先在.aspx.cs实例化的,现在完全跑去Item这个类中了。
再来看看.aspx.cs的代码,也删除所有注释之后,还有很多地方看到两句实例化的代码,就是:

 Item objItem = new Item();

InsusJsUtility js = new InsusJsUtility();

这样,我们可以再把它们从方法或函数内,搬移至页面内:

其它方法内有此两句的,均可以删除了。最终完整的.aspx.cs代码:

以后,BizBase类基本上不需要怎样去修改了,数据库添加有新表,可以以表的名来创建一个类似Item的类。它包含有property,method,function等。在网页中,直接new实例化这个对象。

本篇演示源程序(Access DB; .NET Framework 4.0;):
http://download.cnblogs.com/insus/ASPDOTNET/Asp_OOP2.rar

注:文章太长了,写成续集,请关注......

ASP.NET开发,从二层至三层,至面向对象 (2)的更多相关文章

  1. ASP.NET开发,从二层至三层,至面向对象 (5)

    此是一系列博文,最后一篇了.也是面向初学者而作,望你们能有更好,更多对ASP.NET面向对编程了解与认识. 前一篇中<ASP.NET开发,从二层至三层,至面向对象 (4)>http://w ...

  2. ASP.NET开发,从二层至三层,至面向对象 (4)

    继续上一篇<ASP.NET开发,从二层至三层,至面向对象 (3)>http://www.cnblogs.com/insus/p/3826706.html .我们更深层次学会了逻辑层对象,即 ...

  3. ASP.NET开发,从二层至三层,至面向对象 (3)

    继续上一篇<ASP.NET开发,从二层至三层,至面向对象 (2)>http://www.cnblogs.com/insus/p/3825805.html .我们学会了怎样创建对象,把Biz ...

  4. 【ASP.NET开发】.NET三层架构简单解析

    对于三层架构来说,主要是使用设计模式的思想,对于项目的各个模块实现"高内聚,低耦合"的思想.这里就不做详细的介绍了,如果大家有兴趣,可以阅读软件工程和设计模式相关文章. 对于三层架 ...

  5. ASP.NET开发,简化与封装

    ASP.NET开发,简化与封装 微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的. 任一控件,我们均可以在后端.aspx.cs或.aspx.vb程 ...

  6. 专门为ADO二层升三层的咏南中间件(特种用途)

    专门为ADO二层升三层的咏南中间件(特种用途) 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmai ...

  7. 为方便二层升三层新增的远程方法QuerySql6()

    为了方便原来D6,D7开发的二层老程序升级为三层,新增了远程方法QuerySql6().充分地兼容原来二层SQL的写法. 1)公共方法ParamsToStr() function ParamsToSt ...

  8. DELPHI7 ADO二层升三层新增LINUX服务器方案

    DELPHI7 ADO二层升三层新增LINUX服务器方案 引子:笔者曾经无数次在用户的LINUX服务器上创建一个WINDOWS虚拟机,用于运行自己DELPHI开发中间件. 现在再不需要如此麻烦了. 咏 ...

  9. 下一代Asp.net开发规范OWIN(1)—— OWIN产生的背景以及简单介绍

    随着VS2013的发布,微软在Asp.Net中引入了很多新的特性,比如使用新的权限验证模块Identity, 使用Async来提高Web服务器的吞吐量和效率等.其中一个不得不提的是OWIN和Katan ...

随机推荐

  1. Class AB与Class D功放

    D类功放   又称之为数字功放,其特点是,工作效率高,体积小. D类功放的结构       第一部分为调制器,最简单的只需用一只运放构成比较器即可完成.把原始音频信号加上一定直流偏置后放在运放的正输入 ...

  2. ASP.NET判断是否为手机登录

    protected void Page_Load(object sender, EventArgs e) { MobileHandle(); } 页面加载时候判断是否为手机登录 protected v ...

  3. UWP 查找模板中的控件

    这个标题我也不知道咋起,意思说一下你就明白. 1. 对官方控件的模板进行定制修改,以满足多样化需求,还有漂亮的UI 比如ListView,GridView等. 2. 在设计的情况下并没有这个控件,而在 ...

  4. Could not find installable ISAM

    程序中去读EXCEL文档,以前一直参考<Asp.net读取Excel文件 2>http://www.cnblogs.com/insus/archive/2011/05/05/2037808 ...

  5. Linux查看运行时间

    以下命令都可以查看出系统运行时间.对于查看机器的状态很有帮助. w -b 查看最后一次系统启动的时间 w -r 查看当前系统运行时间 last reboot 查看系统历史启动的时间 top up后表示 ...

  6. 【Spark基础】:RDD

    我的代码实践:https://github.com/wwcom614/Spark 1.RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式 ...

  7. a 便签实现 下载

    如果想通过纯前端技术实现文件下载,直接把a标签的href属性设置为文件路径即可,如下: <a href="https://cdn.shopify.com/s/files/1/1545/ ...

  8. postgresql-查看表大小

    drop table tablesize create table tablesize( phone int) create table tablesize( phone text) create t ...

  9. python 跨平台获取网卡信息和本机ip地址

    笔者在项目中遇到过获取本机网卡ip的例子,利用python库psutil解决了此问题. def get_netcard(): """获取网卡名称和ip地址 "& ...

  10. odoo开发笔记 -- 日常开发注意点小节

    onchange depends区别 视图字段增加readonly属性