一般我们都采用分层架构,
先思考业务,要解决什么样的业务问题,再去思考技术实现。
l 正向思维:
界面(UI)—>业务逻辑(BLL)—>数据逻辑(DAL)—>数据实体(Model)—>数据存储(Db)
l 反向思维:
数据存储(Db)—>数据实体(Model)—>数据逻辑(DAL)—>业务逻辑(BLL)—>界面(UI)。
从数据库推导到界面,从界面推导到数据库。搞清楚类之间的关系。数据之间传递关系。
界面(UI):由控件组成。系统与用户交互的窗口。
业务逻辑(BLL):封装业务处理功能。对象的组合,应用。
数据逻辑(DAL):对数据的操作(算法)。(增删改查的多样性),对象函数,方法。
数据实体(Model):操作的数据结构。对象属性
数据存储(Db):数据的存储持久化。(表)。
体会:程序=数据结构+算法,程序=类对象+类对象之间的关系。
我们的很多项目都是基于微软企业库5.0搭建的。具体说一下我们在企业级项目中是怎么应用的。下面是架构图:
1.基于微软企业库的工具类
封装了微软企业库访问数据库常用的最基本的操作。
2.Model层(数据库表映射)
封装了很多属性。对应数据库表c_hbbb_code
代码:
3.Dal层(封装数据库操作增,删,改,查)
4.Bll层(跟具体业务有关的逻辑)
5.UI层(用户界面)

常用界面功能代码
界面模式:单选(新建,删除,修改,查看)
功能名称 |
查询 新建 删除 修改 查看 |
数据列表
|
加载数据 |
|
分页 |
|
自动加入序号 |
|
添加 |
|
删除 |
|
修改 |
|
查看 |
|
导出 |
|
加载数据
private void LoadData(string SJJG)
{
SFS.Bll.c_hbbb_code objC_SUBCOMPANY=new SFS.Bll.c_hbbb_code();
this.GridView1.DataSource = objC_SUBCOMPANY.GetList(“”);
this.GridView1.DataBind();
}
分页
protected voidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
LoadData(“”);
}
绑定时自动加入序号
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
RadioButton rb = (RadioButton)e.Row.FindControl("rbSelect");
rb.Attributes.Add("onclick", "CheckOne(this);");
e.Row.Cells[1].Text = Convert.ToString(e.Row.RowIndex + 1);
}
}
添加
protected void btnAdd_Click(object sender, EventArgs e)
{
Response.Redirect("Add.aspx?JGDM=" + SJJG);
}
删除
protected void btnUpdate_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
RadioButton radio = row.FindControl("rbSelect") as RadioButton;
if (radio != null && radio.Checked)
{
Label lblID = (Label)row.FindControl("lblJGDM");
Response.Redirect("Delete.aspx?JGDM=" + SJJG);
break;
}
}
}
修改
protected void btnUpdate_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
RadioButton radio = row.FindControl("rbSelect") as RadioButton;
if (radio != null && radio.Checked)
{
Label lblID = (Label)row.FindControl("lblJGDM");
Response.Redirect("Update.aspx?JGDM=" + SJJG);
break;
}
}
}
一般写界面代码逻辑顺序
步骤 |
|
|
|
1 | Page_Load | 中判断Session是否超时。 |
|
获取页面参数。 |
| ||
加载初始化控件(DropDownList,TextBox等控件)。 | 调用BBL层。 | ||
执行初始化查询绑定GridView控件。 | 调用BBL层。 | ||
2 | Button_Click | 判断界面参数设置数据有效性 | 脚本判断,或页面上后台代码判断。 |
处理数据一般包括。 增加:跳转到增加页面。 删除:删除前要提示。 修改:先判断是否选中,跳转到修改页面,需要传递参数。 查询:先检查查询条件的有效性,再执行查询。
| 调用BLL层 | ||
判断是否刷新页面。 |
| ||
3 | GridView | 一般性代码(分页,加单选,多选处理,绑定超连接,特殊列处理) |
|
获得选种行,传递相关参数。 |
| ||
4 | 其他特殊处理 |
|
|