首先,從底層開始即Models:
(1)通用數據訪問類(封裝數據訪問類方法):SqlHelper類
使用命名空間:using System.Data;
using System.Data.SqlClient;
using System.Configuration;//使用配置文件Web.config所需的命名空間
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data; using System.Data.SqlClient; namespace mvcDemo.Models { /// <summary> /// (1)通用訪問類(封裝數據訪問類方法) /// </summary> public class SqlHelper { //定義鏈接字符串 private static string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();//使用配置文件 public static SqlDataReader GetReader(string sql) { SqlConnection con = new SqlConnection(connString); SqlCommand com = new SqlCommand(sql, con); try { con.Open(); return com.ExecuteReader(CommandBehavior.CloseConnection);//dataReader關閉后自動關閉 } catch (Exception ex) { //寫出錯誤日志 throw ex; } } } }
web.config:配置為
<connectionStrings>
<add name="connString" connectionString="Server=.;DataBase=DBFirst;uid=sa;pwd=123456"/>//數據庫連接字符串
</connectionStrings>
(2)數據訪問類:實體名稱+Service,需使用命名空間:
using System.Data;
using System.Data.SqlClient;
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; namespace mvcDemo.Models { /// <summary> ///(2) 數據訪問類 /// </summary> public class sysAdminService {/// <summary> /// 根據賬號和密碼登錄 /// </summary> /// <param name="objAdmin"></param> /// <returns></returns> public sysAdmin AdminLogin(sysAdmin objAdmin)//返回對象思考??及對參數為實體的思考?? { string sql = "select LoginName from First where LoginId={0}and LoginPwd='{1}'"; sql = string.Format(sql,objAdmin.LoginId,objAdmin.Loginpwd);//格式化 SqlDataReader objReader = SqlHelper.GetReader(sql); if (objReader.Read()) { objAdmin.LoginName = objReader["LoginName"].ToString(); } else { objAdmin = null; } objReader.Close(); return objAdmin; } } }
(3)實體類
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace mvcDemo.Models { /// <summary> /// 實體類 /// </summary> public class sysAdmin { public int LoginId { get; set; } public string LoginName { get; set; } public string Loginpwd { get; set; } } }
其次,Views()【視圖層】使用form提交
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>登錄</title> </head> <body> <form method="post" action="/sysAdmin/AdminLogin"> 用戶名:<input type="text" name="LoginId" /> <br /><br /> 密碼:<input type="password" name="Loginpwd"/> <br /><br /> <input type="submit" value="登錄" /><br /> <span style="color:red">@ViewData["info"]</span> </form> </body> </html>
最后,Controller(控制器)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using mvcDemo.Models; namespace mvcDemo.Controllers { public class sysAdminController : Controller { public ActionResult Index()//呈現視圖 { return View(); } //編寫動作方法 public ActionResult AdminLogin() { //[1] 獲取數據 int loginId = Convert.ToInt32(Request.Params["LoginId"]); string loginpwd = Request.Params["Loginpwd"];//接受form提交的數據 sysAdmin objAdmin = new sysAdmin()
{ LoginId = loginId, Loginpwd = loginpwd };//對象初始化器(對屬性賦值) //[2] 業務處理 掉用數據訪問類 使用數據訪問類中的方法 objAdmin = new sysAdminService().AdminLogin(objAdmin); if (objAdmin!=null) { ViewData["info"] = "歡迎登錄!"+objAdmin.LoginName; } else { ViewData["info"] = "用戶名或密碼錯誤"; } //[3] 返回數據(視圖) return View("Index"); } } }
注意:數據庫的創建,若沒有則報錯