在网站项目中添加“模块”

来源:互联网 发布:世纪通信软件 编辑:程序博客网 时间:2024/04/30 11:59

        遇到的问题:

        这段时间在合作开发一个项目,这个项目是经典三层架构的,在U层我们使用的是网站而非项目,而B层和D层使用的是项目。(这里解释一下,这里的项目并非我们整个系统,而是在新建的时候选择的项目和网站,下同。)

        我们在传统的项目,经常用到模块,那么我们抽象出来的模块就可以更好复用,这是面向对象中大家都明白的道理。

        了解了我们这个问题的背景,下面我来说说这个问题:

        在设计过程中,我发现很多地方都要把查到的数据绑定到dropdownlist中。这时我就想能不能把这个绑定的过程抽象出来,抽象成一个方法,这样将来在需要修改的时候我只需要修改我的方法就行,而不是去找那么多的地方一个个修改。

        说到这里,我突然想到,前些天米老师在一次项目验收时,给我们讲的关于面向对象的问题。米老师说,其实我们还没有真正明白什么是面向对象,没有体会到面向对象的好处。真正的面向对象不是把写好的代码或者某个编译好的类到处用,而应该是一种引用而非复制。类改了,那么引用这个类的所有的地方都会跟着改。面向对象使得我们没有必要一个个单独去改他们。

         其实这个方法很简单,很容易实现。今天之所以拿出来说它,主要是想说说如何在一个网站项目中使用这样的方法。

         我们大家都知道,要想让其他类都能使用这个方法,我们需要把这个方法放到一个类中。而面向对象的思想要求我们,对象只能拥有属于它的属性。而通常我们是把这个方法放到一个单独的模块中。但是当我尝试这样做的时候,却不能在一个网站项目中建立这样一个模块。

         对于这样一个问题,我是这样解决的:

         在网站中新建一个类,这个类会被自动放入到App_Code文件夹中。然后在这个类中建立一个静态的方法,这样我们在U层的类中就可以直接调用这个方法啦!

using System;using System.Collections.Generic;using System.Linq;using System.Web;
//引入需要的类using System.Web.UI.WebControls;//因为我传入的是一个控件,这个方法要对控件进行操作,所以引入该命名空间using System.Data;/// <summary>///将查到的数据绑定的下拉列表/// </summary>public class BindingDrop{public BindingDrop(){////TODO: 在此处添加构造函数逻辑//}    /// <summary>    /// 将查到的数据绑定的下拉列表    /// </summary>    /// <param name="obj">要绑定的控件</param>    /// <param name="dt">源数据表</param>    /// <param name="textField">显示的字段--字符串型</param>    /// <param name="valueField">绑定的字段--字符串型</param>    public static void bindDrop(DropDownList obj, DataTable dt, string textField, string valueField) //静态方法    {        //绑定数据        obj.DataSource = dt;        //指定显示字段        obj.DataTextField = textField;        //指定绑定值        obj.DataValueField = valueField;        obj.DataBind();        //插入 请选择 项        obj.Items.Insert(0, new ListItem("--请选择--", ""));    }}

         这样就可是实现和模块功能一样的一个类,在界面层需要的地方直接使用类名调用该静态方法即可。