
如上圖所示,MVC結(jié)構(gòu)中的模型層可以獨(dú)立的抽出為三大類【BLL業(yè)務(wù)邏輯類】【DAL數(shù)據(jù)訪問類】【Models實(shí)體類】
其中【BLL】要引用【DAL】和【Models】
【DAL】要引用【Models】
【V】和【C】所構(gòu)成的【UI】層要去引用【BLL】和【Models】
這樣就構(gòu)成了一個MVC+三層架構(gòu)項(xiàng)目
項(xiàng)目結(jié)構(gòu)圖

接下來我就帶大家一步一步的實(shí)現(xiàn)這個案例
采用的編輯器為VS2017
首先打開VS新創(chuàng)建一個項(xiàng)目

選擇空模板并勾選MVC

然后在解決方案上【右鍵】【添加】【新項(xiàng)目】來依次添加【BLL】【DAL】【Models】三大類

接著在【BLL】上的引用上【右鍵】【添加引用】并勾選【DAL】和【Models】

同理【DAL】要添加【Models】
項(xiàng)目的引用要添加【BLL】和【Models】
然后在【Models】類庫中新建一個【SysAdmin】管理員實(shí)體類,用來存放數(shù)據(jù),相當(dāng)于一個數(shù)據(jù)庫。
namespace Models
{
//管理員實(shí)體類
public class SysAdmin
{
public string UserId { get; set; }
public string Pwd { get; set; }
public string UserName { get; set; }
}
}
接著在【DAL】類庫中新建一個文件夾,并在內(nèi)部新建一個通用數(shù)據(jù)庫訪問類【SQL】。
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace DAL
{
//通用數(shù)據(jù)訪問類
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】中再創(chuàng)建一個【SysAdminService】管理員的數(shù)據(jù)訪問類,通過調(diào)用【SQL】類傳入sql語句去查詢真正的數(shù)據(jù)庫。并把查詢出來的數(shù)據(jù)存放到【Models】的【SysAdmin】類中
using Models;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
//管理員數(shù)據(jù)訪問類
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】中創(chuàng)建一個【SysAdminManager】管理員的業(yè)務(wù)邏輯類,等待控制器調(diào)用。
using DAL;
using Models;
namespace BLL
{
//管理員業(yè)務(wù)邏輯類
public class SysAdminManager
{
public SysAdmin AdminLogin(SysAdmin objAdmin)
{
return new SysAdminService().AdminLogin(objAdmin);
}
}
}
之后我們要創(chuàng)建一個控制器,在【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】文件夾下創(chuàng)建一個與控制器同名的文件夾【SysAdmin】然后在下面場創(chuàng)建一個頁面文件
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>AdminLogin</title>
</head>
<body>
<form method="post" action="\SysAdmin\AdminLogin"><!--\控制器\控制器方法-->
用戶名:<input name="UserId" type="text" />
密碼:<input name="Pwd" type="password" />
<input type="submit" value="登錄" />
</form>
<div>
@ViewData["info"]
</div>
</body>
</html>
最后,再改一下【App_Start】文件夾下的路由設(shè)置,將默認(rèn)控制器的名稱改為你控制器的名稱。

這樣一個簡單的基于MVC+三層架構(gòu)的登錄功能就實(shí)現(xiàn)了。
源碼鏈接: https://pan.baidu.com/s/1hrZxZbI 密碼: g78u