MVC+三層架構(gòu)實(shí)現(xiàn)簡單登錄

MVC.png

如上圖所示,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)圖

Object.png

接下來我就帶大家一步一步的實(shí)現(xiàn)這個案例

采用的編輯器為VS2017

首先打開VS新創(chuàng)建一個項(xiàng)目

1.png

選擇空模板并勾選MVC

2.png

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

3.png

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

4.png

同理【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)控制器的名稱改為你控制器的名稱。

controller.png

這樣一個簡單的基于MVC+三層架構(gòu)的登錄功能就實(shí)現(xiàn)了。

源碼鏈接: https://pan.baidu.com/s/1hrZxZbI 密碼: g78u

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容