如上图所示,MVC结构中的模型层可以独立的抽出为三大类【BLL业务逻辑类】【DAL数据访问类】【Models实体类】
其中【BLL】要引用【DAL】和【Models】
【DAL】要引用【Models】
【V】和【C】所构成的【UI】层要去引用【BLL】和【Models】
这样就构成了一个MVC+三层架构项目
项目结构图
接下来我就带大家一步一步的实现这个案例
采用的编辑器为VS2017
首先打开VS新创建一个项目
选择空模板并勾选MVC
然后在解决方案上【右键】【添加】【新项目】来依次添加【BLL】【DAL】【Models】三大类
接着在【BLL】上的引用上【右键】【添加引用】并勾选【DAL】和【Models】
同理【DAL】要添加【Models】
项目的引用要添加【BLL】和【Models】
然后在【Models】类库中新建一个【SysAdmin】管理员实体类,用来存放数据,相当于一个数据库。
namespace Models
{
//管理员实体类
public class SysAdmin
{
public string UserId { get; set; }
public string Pwd { get; set; }
public string UserName { get; set; }
}
}
接着在【DAL】类库中新建一个文件夹,并在内部新建一个通用数据库访问类【SQL】。
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace DAL
{
//通用数据访问类
class SQL
{
static string str = ConfigurationManager.ConnectionStrings["AppConnection"].ConnectionString;
public static SqlDataReader GetReader(string sql)
{
SqlConnection conn = new SqlConnection(str);
SqlCommand cmd = new SqlCommand(sql,conn);
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
//输出异常日志
throw ex;
}
}
}
}
然后在【DAL】中再创建一个【SysAdminService】管理员的数据访问类,通过调用【SQL】类传入sql语句去查询真正的数据库。并把查询出来的数据存放到【Models】的【SysAdmin】类中
using Models;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
//管理员数据访问类
public class SysAdminService
{
public SysAdmin AdminLogin(SysAdmin objAdmin)
{
string str = "select * from Admin where UserId='{0}' and Pwd='{1}'";
str = string.Format(str,objAdmin.UserId,objAdmin.Pwd);
SqlDataReader objReader = SQL.GetReader(str);
if (objReader.Read())
{
objAdmin.UserName = objReader["UserName"].ToString();
}
else
{
objAdmin = null;
}
objReader.Close();
return objAdmin;
}
}
}
最后在【BLL】中创建一个【SysAdminManager】管理员的业务逻辑类,等待控制器调用。
using DAL;
using Models;
namespace BLL
{
//管理员业务逻辑类
public class SysAdminManager
{
public SysAdmin AdminLogin(SysAdmin objAdmin)
{
return new SysAdminService().AdminLogin(objAdmin);
}
}
}
之后我们要创建一个控制器,在【Controllers】文件夹上【右键】【添加】【控制器】并命名为【SysAdminController】
using Models;
using BLL;
public class SysAdminController : Controller
{
// GET: SysAdmin
public ActionResult Index()
{
return View("AdminLogin");
}
public ActionResult AdminLogin()
{
SysAdmin objAdmin = new SysAdmin()
{
UserId = Request.Params["UserId"],
Pwd = Request.Params["Pwd"]
};
objAdmin = new SysAdminManager().AdminLogin(objAdmin);
if(objAdmin != null)
{
ViewData["info"] = "欢迎您:"+objAdmin.UserName;
}
else
{
ViewData["info"] = "用户名或密码错误";
}
return View("AdminLogin");
}
}
同时我们要在【Views】文件夹下创建一个与控制器同名的文件夹【SysAdmin】然后在下面场创建一个页面文件
@{
Layout = null;
}
AdminLogin
@ViewData["info"]
最后,再改一下【App_Start】文件夹下的路由设置,将默认控制器的名称改为你控制器的名称。
这样一个简单的基于MVC+三层架构的登录功能就实现了。
源码链接: https://pan.baidu.com/s/1hrZxZbI 密码: g78u