使用三层架构实现简单的MVC登陆操作

转载:http://blog.csdn.net/agonie201218/article/details/44456847

对个别内容进行了修正!!!

一丶使用三层架构创建一个简单的MVC登录操作

   1.首先,创建一个项目以及BLL层、DAL层、Entity层,如图一:

                                          使用三层架构实现简单的MVC登陆操作_第1张图片

图一

    2.创建一个数据库如图二:


图二

  3基本工作已做好,接下来就编BLL层、DAL层、Entity层。

     3.1先编Entity。Entity实体层(不属于三层架构的任意一层)定义一个类,主要用来保存以及传递数据库的信息。比如以图二的数据库为列,实体层代码如下:

   

[csharp]  view plain  copy
 print ?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.ComponentModel.DataAnnotations;  
  6.   
  7. namespace Entity  
  8. {  
  9.     public class UserInfo  
  10.     {  
  11.           
  12.         public int ID { getset; }  
  13.           
  14.         [Required(ErrorMessage="用户名不能为空")]  
  15.         public string UserName { getset; }  
  16.   
  17.         [Required(ErrorMessage = "密码不能为空")]  
  18.         public string UserPWD { getset; }  
  19.     }  
  20. }  

 
    这样就定义了一个实体层(定义的字段和数据库里的一样)。 
  

 3.2 DAL层。DAL只提供基本的数据访问,在其内定义增删改查!比如登录(查)代码如下:

[csharp]  view plain  copy
 print ?
  1. using Entity;  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Configuration;  
  5. using System.Data;  
  6. using System.Data.SqlClient;  
  7. using System.Linq;  
  8. using System.Text;  
  9. using System.Threading.Tasks;  
  10.   
  11. namespace DAL  
  12. {  
  13.     public class UserService  
  14.     {  
  15.         //获取用户信息  
  16.         public UserInfo GetUser(string userName)  
  17.         {  
  18.                 string sql ="select * from userinfo where UserName=@username ";  
  19.                 SqlParameter[] param = new SqlParameter[]{  
  20.                 new SqlParameter("@username",userName),  
  21.                 };  
  22.   
  23.                 // 执行  
  24.                  UserInfo user =new UserInfo ();  
  25.   
  26.                  using (SqlDataReader sdr = SqlHelper.ExecuteReader(sql, param))  
  27.                  {  
  28.                      while(sdr.Read())  
  29.                      {  
  30.                          user.UserName = sdr["UserName"].ToString();  
  31.                          user.UserPWD = sdr["UserPwd"].ToString();  
  32.                      }  
  33.   
  34.                        return user;  
  35.             }  
  36.         }  
  37.     }  
  38. }  

 
  

  首先得引入Entity,其次,需要注意的是必须把UserService这个类定义为public类型的,否则BLL层访问不到。代码就不一一解读了,多是一些很基础的语句。

注:1.SqlHelper是一个已经封装好的类,专门执行sql语句。这里也可以自己写sql执行语句。

 public static SqlDataReader ExecuteReader(string sql,params SqlParameter[] pms)
        {
            SqlConnection con = new SqlConnection(constr);
               using( SqlCommand cmd = new SqlCommand(sql, con))

{

if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    try
                    {
                        con.Open();
                        return cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    }
                    catch (Exception)
                    {
                        con.Close();
                        con.Dispose();
                        throw;
                    }

}

                    
        }

2.须在web.config 里配置链接字符串。

  
    
  


  3.3BLL层:

  

[csharp]  view plain  copy
 print ?
  1. using DAL;  
  2. using Entity;  
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Data;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Threading.Tasks;  
  9.   
  10. namespace BLL  
  11. {  
  12.     public class UserManager  
  13.     {  
  14.         public bool Login(string userName, string userPWD)  
  15.         {  
  16.             // 业务逻辑层 调用 数据访问层  
  17.             UserService service = new UserService();  
  18.             UserInfo user =  service.GetUser(userName);  
  19.             if (user == null || user.UserPWD != userPWD)  
  20.             {  
  21.                 return false;  
  22.             }  
  23.             else  
  24.             {  
  25.                 return true;  
  26.             }  
  27.         }  
  28.     }  
  29. }  

 
    首先还是得引入Entity和DAL。。。 
  负责处理业务逻辑。通过获取UI传来的用户指令,执行业务逻辑,在需要访问数据源的时候,直接交个DAL进行处理。处理完成后,返回必要数据给UI。其实BLL层很简单, 
   
  

4.设计简单的登陆页面

[html]  view plain  copy
 print ?
  1. ");  
  2.               }  
  3.               else {   
  4.                   ModelState.AddModelError("info""用户名或密码错误!!!");  
  5.                   return View();  
  6.               }  
  7.   
  8.            }  
  9.              

6.运行结果:

使用三层架构实现简单的MVC登陆操作_第2张图片

二丶实现增删改查

  其实学会了登录功能后其他 增删改查功能都是差不多的。只不过就是换了个sql语句,换汤不换药。我就不一一介绍了。
三、思路
login.cshtml内input为name="username"和name="userpwd"的值  --(传入控制器)--》HomeControl内[httppost]
 actionResult.Dologin()。Dologin()内调用业务逻辑层,业务逻辑层再调用数据访问层

你可能感兴趣的:(ASP.NET,MVC)