要是按三层架构来做的话/
那么以下这些代码是不是只能放在表现层.
if (myFile.HasFile)
{
string strFileName = myFile.FileName;
string strFileExt = System.IO.Path.GetExtension(strFileName); if (strFileExt.ToLower() == ".rar")
{
string strFileNewName = DateTime.Now.ToString("yyyyMMddhhmmss") + strFileExt;
string strUrl = Request.Url.ToString();
string strFileDownloadPath = strUrl.Substring(0, strUrl.LastIndexOf('/')) + '/' + strFileNewName;
int iFileSize = myFile.PostedFile.ContentLength;
myFile.SaveAs(Server.MapPath(strFileNewName));
Response.Write(string.Format("文件上传成功<br>下载地址:{0}<br>文件大小:{1}字节<br>", strFileDownloadPath, iFileSize));
}
else
{
Response.Write("系统只能接受rar文件");
}
}
else
{
Response.Write("请选择您要上传的文件");
}
那么以下这些代码是不是只能放在表现层.
if (myFile.HasFile)
{
string strFileName = myFile.FileName;
string strFileExt = System.IO.Path.GetExtension(strFileName); if (strFileExt.ToLower() == ".rar")
{
string strFileNewName = DateTime.Now.ToString("yyyyMMddhhmmss") + strFileExt;
string strUrl = Request.Url.ToString();
string strFileDownloadPath = strUrl.Substring(0, strUrl.LastIndexOf('/')) + '/' + strFileNewName;
int iFileSize = myFile.PostedFile.ContentLength;
myFile.SaveAs(Server.MapPath(strFileNewName));
Response.Write(string.Format("文件上传成功<br>下载地址:{0}<br>文件大小:{1}字节<br>", strFileDownloadPath, iFileSize));
}
else
{
Response.Write("系统只能接受rar文件");
}
}
else
{
Response.Write("请选择您要上传的文件");
}
像你上面的这种需要保存上传的文件你可以写一个UserFile类,类里面有个public bool Save(Stream file,string fileName)方法,这个类还需要有FileName,FileSize这些属性,然后修改你现在的这个方法为if myFile.HasFile)
{
string strFileName = myFile.FileName;
string strFileExt = System.IO.Path.GetExtension(strFileName);
string strUrl = Request.Url.ToString();
UserFile file = new UserFile();
if(file.Save(myFile.FileContent, strFileName))
{
string strFileDownloadPath = strUrl.Substring(0, strUrl.LastIndexOf('/')) + '/' + file.FileName ;
Response.Write(string.Format("文件上传成功 <br> 下载地址:{0} <br> 文件大小:{1}字节 <br> ", strFileDownloadPath, file.FileSize));
}
else
{
Response.Write("系统只能接受rar文件");
}
}
else
{
Response.Write("请选择您要上传的文件");
}这样修改以后,像文件的重命名、判断是否有效文件名,都是在UserFile中完成。在其他地方的重用性也就搞了。分层的目的也就是提高可复用性,让整个结构更为清晰。
建议象我和LZ这样的人,看看
http://www.cnblogs.com/ilovejolly/archive/2006/10/05/521440.html
Scott Mitchell的ASP.NET2.0数据指南中文版
保证你1个小时内知道怎么用 asp.net 设计三层结构记得加分啊
string mingzi = this.textBox1.Text;
string mima = this.textBox2.Text;
BaseCommon.UserInfo userInfo = new BaseCommon.UserInfo();
if(userInfo.ZhuCe(mingzi,mima)){
MessageBox.Show("ok");
}
else{
MessageBox.Show("not ok");
} 这个是中间的业务层:
public bool ZhuCe(string Mingzi, string Mima) {
Mima = jiMi.EncryPwd(Mima);
return myDB.注册用户(Mingzi, Mima); 这个是数据层
internal bool 注册用户(string Mingzi, string Mima)
{
//if (this.CheckExists(uid))
// return false;
cmd.CommandText = "insert into Vip(userID,userPwd) values('" + Mingzi + "','" + Mima + "')";
this.OpenConn();
int result = (int)cmd.ExecuteNonQuery();
this.CloseConn();
if (result > 0)
return true;
else
return false;
}
我也正在学习这个 不知道写的对不对 ,,忘指点
假如说有一个汽车生产的流程,客户端的界面只需要点击不同的按钮来生产不同的汽车。
那么对于数据底层DAL来说,它就是一系列的汽车零件,有获取某款轮胎,获取某款车窗,获取某款轮胎当前剩余量等方法....
对于业务层来说,它更多的是关注业务逻辑,也就是一个汽车组装的流程,根据UI给与的指示,假如UI需要生产一辆东风标志的汽车,那么业务层就只需要一个生产东风标志汽车的方法,然后是根据需求来调用数据底层的汽车零件,包括判断零件是否已经为0,用户有无权限进行汽车生产等,然后该流程返回不同情况的结果值。
UI层就更简单了,只是简单的一些界面设计,以及调用业务层的方法而已。
不要把这个概念搞混了
string mingzi = this.textBox1.Text;
string mima = this.textBox2.Text;
BaseCommon.UserInfo userInfo = new BaseCommon.UserInfo();
if(userInfo.ZhuCe(mingzi,mima)){
MessageBox.Show("ok");
}
else{
MessageBox.Show("not ok");
} 这…
只要你用这个做一次项目你就了解了
view又称UI,是前台,只是页面,没有写代码
然后是业务逻辑层,这一层主要写你想要实现什么功能
这一层你只可以调用数据层的方法就行
再就是数据层
这里面一般是sqlhelp.cs
全部是写的方法
一般sql语句都是写在这里面的