首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

小弟我在学习三层结构,今天写了个添加留言的程序,大家帮小弟我看看代码,三层是这样做的吗

2011-12-28 
我在学习三层结构,今天写了个添加留言的程序,大家帮我看看代码,三层是这样做的吗?我一共建了4个项目,分别

我在学习三层结构,今天写了个添加留言的程序,大家帮我看看代码,三层是这样做的吗?
我一共建了4个项目,分别是   BLL、DAL、Model、Web,(呵呵,学书上讲的)
代码下面列出。

我觉得那个   BLL   的业务逻辑层好像没什么用,好像只是做了个中转,为什么不让前台页面直接调用DAL里的guestbook.cs的方法,处理数据库呢?不理解!
还有,Model实体层,我也不懂这样做有什么好处?

小弟刚学,请大家抽出宝贵时间帮我看看,指点一下小弟,万分感谢!

1、Web层
只有一个页面,显示留言内容列表,和添加留言
using   System;
using   System.Collections;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Web;
using   System.Web.SessionState;
using   System.Web.UI;
using   System.Web.UI.WebControls;
using   System.Web.UI.HtmlControls;
using   BLL;
using   Model;

namespace   GuestBook
{
///   <summary>
///   index   的摘要说明。
///   </summary>
public   class   index   :   System.Web.UI.Page
{
protected   System.Web.UI.WebControls.TextBox   TextBox1;
protected   System.Web.UI.WebControls.TextBox   TextBox2;
protected   System.Web.UI.WebControls.Button   Button1;
protected   System.Web.UI.WebControls.Label   Label1;
protected   System.Web.UI.WebControls.DataGrid   DataGrid1;

Business   bll=new   Business();
Common   com=new   Common();
Gb   gb=new   Gb();

private   void   Page_Load(object   sender,   System.EventArgs   e)
{
GetList();
}

#region   Web   窗体设计器生成的代码
override   protected   void   OnInit(EventArgs   e)
{
//
//   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

///   <summary>
///   设计器支持所需的方法   -   不要使用代码编辑器修改
///   此方法的内容。
///   </summary>
private   void   InitializeComponent()
{        
this.Button1.Click   +=   new   System.EventHandler(this.Button1_Click);
this.DataGrid1.DeleteCommand   +=   new   System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);
this.Load   +=   new   System.EventHandler(this.Page_Load);

}
#endregion

private   void   Button1_Click(object   sender,   System.EventArgs   e)
{
gb.name=this.TextBox1.Text.Trim();
gb.content=this.TextBox2.Text.Trim();
if(bll.Add(gb))
{
this.Label1.Text= "添加成功! ";
this.TextBox1.Text= " ";
this.TextBox2.Text= " ";
}
else
{
this.Label1.Text= "添加失败! ";
}
GetList();
}

public   void   GetList()
{
this.DataGrid1.DataSource=bll.GetList();
this.DataGrid1.DataKeyField= "id ";
this.DataGrid1.DataBind();
}

private   void   DataGrid1_DeleteCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)
{
try
{
bll.Del(Convert.ToInt32(this.DataGrid1.DataKeys[e.Item.ItemIndex]));
Response.Write(com.Alert( "删除成功! "));
}
catch
{
Response.Write(com.Alert( "删除失败! "));
}
GetList();
}
}
}


2、BLL业务逻辑层Business.cs

using   System;
using   System.Data;
using   DAL;
using   Model;



namespace   BLL
{
///   <summary>
///   Business   的摘要说明。
///   </summary>
public   class   Business
{
guestbook   gb=new   guestbook();  

public   Business()
{
}

#region     留言
///   <summary>
///   添加留言
///   </summary>
///   <param   name= "mygb "> </param>
///   <returns> </returns>
public   bool   Add(Gb   mygb)
{
return   gb.InsertGB(mygb);
}

///   <summary>
///   读取全部留言
///   </summary>
///   <returns> </returns>
public   DataSet   GetList()
{
return   gb.GetGB();
}

///   <summary>
///   删除留言
///   </summary>
///   <param   name= "id "> </param>
///   <returns> </returns>
public   bool   Del(int   id)
{
return   gb.DelGB(id);
}

#endregion
}
}



[解决办法]
是三层.呵呵~~~~

[解决办法]
你试着把三层全写在一层上,然后在改一下数据库ID字段名,如把name改成userName,你看看写成三层改起相关代码量和全写在页面.cs里改的代码量哪个大
[解决办法]
1. 类名应该大写
2. Page_Load绑定应该加IsPostBack判断
3. 删除之后e.Item.EditItemIndex = -1;
4.
if ( Conn.State.ToString() == "Open " )
=======================================
if (Conn.State == ConnectionState.Open)
5.
public SqlDataReader ExecuteSqlDataReader( string strSQL )
========================================================
这个方法没什么价值,连接一关,DataReader就over

[解决办法]
to zhangsn()
Button1建议改为btn_Save或其他
DataGrid1建议改为dg_GuestBookItems或其他
这样大多数人一看id就知道这个控件大概是干什么的了(个人观点仅供参考)
[解决办法]
说的简单点:
BLL层,你要做什么判断,就放在这行啦。例如发布的内容不能为空啊,只有管理员才能删除啊等等。
Model,这是抽象出一个对象,面向对象嘛,然后在层之间传输一个实体对象。
[解决办法]
分层其实就是为了知道在哪里做什么,形成一定的规律后,你开发的速度自然快。

有规律的做事情效肯定效率会高一点

热点排行