要是按三层架构来做的话/
那么以下这些代码是不是只能放在表现层.
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("请选择您要上传的文件");
        }

解决方案 »

  1.   

    三层架构主要还是先要学一下OO设计方面的东西,分层设计主要是把各自的职责区分开,合理分解。想你上面的这种情况的文件上传的代码应该放在业务层,在业务层建立一个UserFile类,来处理上传文件的保存。
      

  2.   

    那就是说一般有IF语句的话.都应该放在业务逻辑层吧.表现层就是接收一些控件反回的值,和Request是吧?来传给业务逻辑层吧?
      

  3.   

    不是有IF语句的地方,是类的职责分离。就是这个类该干什么不该干什么,不该干的东西应该给谁。这个你找些OO设计方面的书看看。
    像你上面的这种需要保存上传的文件你可以写一个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中完成。在其他地方的重用性也就搞了。分层的目的也就是提高可复用性,让整个结构更为清晰。
      

  4.   

    表现层主要完成的界面的美化,不涉及代码的编写业务逻辑层指你编写的所有代码;数据库层只负责库表结构的设计以及SQL语句、存储过程、触发器等数据库对象的创建这就是软件设计的三层架构
      

  5.   

    都怪中国asp.net的入门书都从 connettion 说起,根本没有分层,很多人做了2年asp.net,特别是从asp转过来的,根本不知道什么叫三层。国人写的书又是天下一大抄。
    建议象我和LZ这样的人,看看
    http://www.cnblogs.com/ilovejolly/archive/2006/10/05/521440.html
    Scott Mitchell的ASP.NET2.0数据指南中文版
    保证你1个小时内知道怎么用 asp.net 设计三层结构记得加分啊
      

  6.   

    clm0010说的那个教程的确是几乎必修课一样的教程,对应的英文版教程可以在http://www.asp.net/learn/data-access上找到。
      

  7.   

      比如:这个是用户注册的表现层
                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;
            }  
     我也正在学习这个 不知道写的对不对 ,,忘指点
      

  8.   

    BLL(业务层),DAL(数据访问层),UI(显示层),UI引用-BLL,BLL引用DAL
      

  9.   

    说个汽车制造的简单例子吧,也不写代码举例了。
    假如说有一个汽车生产的流程,客户端的界面只需要点击不同的按钮来生产不同的汽车。
    那么对于数据底层DAL来说,它就是一系列的汽车零件,有获取某款轮胎,获取某款车窗,获取某款轮胎当前剩余量等方法....
    对于业务层来说,它更多的是关注业务逻辑,也就是一个汽车组装的流程,根据UI给与的指示,假如UI需要生产一辆东风标志的汽车,那么业务层就只需要一个生产东风标志汽车的方法,然后是根据需求来调用数据底层的汽车零件,包括判断零件是否已经为0,用户有无权限进行汽车生产等,然后该流程返回不同情况的结果值。
    UI层就更简单了,只是简单的一些界面设计,以及调用业务层的方法而已。
      

  10.   

    MVC不一定是3层,大型网站也许有好几层MVC也不等于3层,3层也不是MVC
    不要把这个概念搞混了
      

  11.   

      比如:这个是用户注册的表现层 
                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");  
        
          }   这…
      

  12.   

    很简单的
    只要你用这个做一次项目你就了解了
    view又称UI,是前台,只是页面,没有写代码
    然后是业务逻辑层,这一层主要写你想要实现什么功能
    这一层你只可以调用数据层的方法就行
    再就是数据层
    这里面一般是sqlhelp.cs
    全部是写的方法
    一般sql语句都是写在这里面的