關於c#購物車的地址的增刪改查(mvc,詳細註釋)
阿新 • • 發佈:2020-08-02
就是簡簡單單的增刪改查,也沒什麼特殊的或者特別難的業務邏輯,二級聯動用一張表的自連線做的,註釋都加在程式碼中了,不多說了,程式碼如下:
1.首先是我們的實體類資料模型層(model)
地址詳情表:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace G5.Exam03.Day12.Models { public class ShAddress { public int AId { get; set; } publicShAddressstring AName { get; set; } public string Area { get; set; } public string Dzhi { get; set; } public string hanSet { get; set; } } }
二級聯動用的區域表:
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace G5.Exam03.Day12.Models {Qypublic class Qy { public int Id { get; set; } public string Name { get; set; } public int QId { get; set; } } }
2.ado呼叫:
地址的dal層:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using G5.Exam03.Day12.Models; namespace G5.Exam03.Day12.Dal {AddressDalpublic class AddressDal { DBHelper db = new DBHelper(); //地址顯示 public List<ShAddress> GetList() { string sql = "select * from ShAddress"; return db.GetToList<ShAddress>(sql); } //刪除功能 public int Del(int id) { string sql = $"delete from ShAddress where AId={id}"; return db.ExecuteNonQuery(sql); } //新增的sql語句及方法 public int Upt(ShAddress model) { string sql = $"Update ShAddress set AName='{model.AName}',Area='{model.Area}',Dzhi='{model.Dzhi}',hanSet='{model.hanSet}' where AId={model.AId}"; return db.ExecuteNonQuery(sql); } } }
省市及新增,反填的dal層:
這兩個ado呼叫層其實可以寫在一塊的,具體看您要實現的功能及要求:
using G5.Exam03.Day12.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace G5.Exam03.Day12.Dal { public class AddDal { DBHelper db = new DBHelper(); //省市下拉 public List<Qy> GetSsList(int qid) { string sql = $"select * from Qy where QId={qid}"; return db.GetToList<Qy>(sql); } //新增的sql語句及方法 public int Add(ShAddress model) { string sql = $"insert into ShAddress values ('{model.AName}','{model.Area}','{model.Dzhi}','{model.hanSet}')"; return db.ExecuteNonQuery(sql); } //根據id查詢資料進行反填 public List<ShAddress> GetListId(int id) { string sql = $"select * from ShAddress where AId={id}"; return db.GetToList<ShAddress>(sql); } } }AddDal
3.控制器(檢視)如下(這裡其實建立一個控制器就好,具體看要求):
using G5.Exam03.Day12.Dal; using G5.Exam03.Day12.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; namespace G5.Exam03.Day12.Controllers { public class AddressController : Controller { AddressDal dal = new AddressDal(); // GET: Address public ActionResult Index() { return View(); } public int Del(int id) { return dal.Del(id); } [HttpGet] public JsonResult GetList() { return Json(dal.GetList(),JsonRequestBehavior.AllowGet); } public ActionResult Upt(int id) { ViewBag.id = id; return View(); } [HttpPost] public int Upt(ShAddress model) { return dal.Upt(model); } //根據id獲取地址資訊->反填 [HttpPost] public JsonResult GetId(int id) { AddDal add = new AddDal(); return Json(add.GetListId(id), JsonRequestBehavior.AllowGet); } } }AddressController
using G5.Exam03.Day12.Dal; using G5.Exam03.Day12.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace G5.Exam03.Day12.Controllers { public class AddController : Controller { AddDal add = new AddDal(); // GET: Add //為新增檢視提供方法 public ActionResult Add() { return View(); } //從後臺獲取到我們要的資料來源 [HttpPost]// public int Add(ShAddress model) { return add.Add(model); } //為省市提供資料來源 [HttpGet] public JsonResult GetSs(int qid) { return Json(add.GetSsList(qid), JsonRequestBehavior.AllowGet); } //為區縣提供資料來源 [HttpGet] public JsonResult GetQx(int qid) { return Json(add.GetSsList(qid), JsonRequestBehavior.AllowGet); } } }AddController
4.檢視層:(view)
地址顯示檢視:
@{ ViewBag.Title = "Index"; } <h2>Index</h2> <input type="button" onclick="Add()" name="name" value="新增收穫地址" /> <div id="divMain"> </div> <script> //文件就緒函式 $(function () { Show(); }) //顯示函式 function Show() { $.ajax({ url: "/Address/GetList",//地址 dataType: "json",//返回到後臺的資料格式 type: "get",//獲取到資料的方式 success: function (d) {//成功就繼續執行後面的程式碼 //清空原有的舊資料 $("#divMain").empty(); //each遍歷顯示資料庫的資料 $(d).each(function () { //字串拼接 var str = '<div style="border:solid;color:lightpink;">'; str += '收貨人:' + this.AName; str += '<img src="../Img/228c96645e893848a8bd68a66c84777f.png" onclick="Del(' + this.AId + ')" Title="刪除" style="float:right;cursor:pointer;"/></br>'; str += '所在地區:' + this.Area +'</br>'; str += '地址:' + this.Dzhi + '</br>'; str += '手機:' + this.hanSet + '<a href="javascript:Edit(' + this.AId +')" style="float:right;cursor:pointer;">編輯</a>'; str += '</div></br >'; //在div最後面新增要拼接上去的內容 $("#divMain").append(str); }) } }) } //刪除功能實現 function Del(id) { //彈框提示是否要刪除 if (confirm('確認刪除嗎?')) { $.ajax({ url: "/Address/Del",//地址 dataType: "json",//返回到後臺的資料格式 data: { id: id },//要向資料庫後臺傳送的資料,前面是你的控制器名稱,後面是你傳送的值定義好的名稱(我這裡傳送值的名稱與控制器名稱是一樣的) type: "post",//獲取到資料的方式 post是傳送命令到資料庫中,get是從資料庫獲取到資料 success: function (d) {//成功就繼續執行後面的程式碼 if (d > 0) { alert("刪除成功!"); //呼叫顯示函式進行重新整理頁面 Show(); } else { alert("刪除失敗!"); } } }) } else { return false;//選擇否,返回false; } } //編輯按鈕要跳轉到編輯頁面 function Edit(id) { location.href = '/Address/Upt?id=' + id; } //新增 function Add() { location.href = '/Add/Add'; } </script>Index.cshtml
地址修改檢視:
@{ ViewBag.Title = "Upt"; } <script src="~/Scripts/jquery-3.4.1.min.js"></script> <h2>Upt</h2> <table class="table table-bordered"> <tr> <td>收貨人:</td> <td> <input type="hidden" id="aid"/> <input id="aName" type="text" name="name" /></td> </tr> <tr> <td>所在地區:</td> <td> 省市:<select id="Ss" onfocus="BandQ(this.value)"></select> 區:<select id="q"></select> </td> </tr> <tr> <td>地址:</td> <td><input id="Dzhi" type="text" name="name" /></td> </tr> <tr> <td>手機:</td> <td><input id="hanSet" type="text" name="name" /></td> </tr> <tr> <td colspan="2"><input type="button" onclick="Xg()" name="name" value="修改" /></td> </tr> </table> <script> //文件就緒函式 $(function () { //繫結二級聯動的函式 var id = @ViewBag.id; $("#aid").val(id); Ft(id); BandSel(); }) function Ft(id) { $.ajax({ url: "/Address/GetId", data: {id:id}, dataType: "json", type: "post", success: function (d) { // console.log(d); alert(d.AId); $("#aid").val(d.AId); $("#aName").val(d.AName); $("#Dzhi").val(d.Dzhi); //$("#Ss option:selected").text() + $("#q option:selected").text(); $("#hanSet").val(d.hanSet); } }) } //修改函式 function Xg() { var obj = {}; obj.AId = $("#aid").val();//勿忘我 obj.AName = $("#aName").val(); obj.Area = $("#Ss option:selected").text() + $("#q option:selected").text(); obj.Dzhi = $("#Dzhi").val(); obj.hanSet = $("#hanSet").val(); $.ajax({ url: "/Address/Upt", data: { model:obj }, dataType: "json", type: "post", success: function (d) { if (d > 0) { alert("修改成功!"); location.href = '/Address/Index'; } else { alert("修改失敗!"); } } }) } //繫結下拉 省市繫結 function BandSel() { $.ajax({ url: "/Add/GetSs", data: { qid:0}, dataType: "json", type: "get", success: function (d) { $("#Ss").empty(); $(d).each(function () { var str = '<option value="' + this.Id + '">' + this.Name + '</option>'; $("#Ss").append(str); }) } }) } function BandQ() { $.ajax({ url: "/Add/GetQx", data: { qid: $("#Ss").val() }, dataType: "json", type: "get", success: function (d) { $("#q").empty(); $(d).each(function () { var str = '<option value="' + this.Id + '">' + this.Name + '</option>'; $("#q").append(str); }) } }) } </script>Upt.cshtml
地址新增檢視:
@{ ViewBag.Title = "Add"; } <h2>Add</h2> <table class="table table-bordered"> <tr> <td>收貨人:</td> <td><input id="aName" type="text" name="name" value="" /></td> </tr> <tr> <td>所在地區:</td> <td> 省市:<select id="Ss" onfocus="BandQ(this.value)"></select> 區:<select id="q"></select> </td> </tr> <tr> <td>地址:</td> <td><input id="Dzhi" type="text" name="name" value="" /></td> </tr> <tr> <td>手機:</td> <td><input id="hanSet" type="text" name="name" value="" /></td> </tr> <tr> <td colspan="2"><input type="button" onclick="Tj()" name="name" value="新增到地址" /></td> </tr> </table> <script> //文件就緒函式 $(function () { //繫結二級聯動的函式 BandSel(); }) //新增函式 function Tj() { var obj = {}; obj.AName = $("#aName").val(); obj.Area = $("#Ss option:selected").text() + $("#q option:selected").text(); obj.Dzhi = $("#Dzhi").val(); obj.hanSet = $("#hanSet").val(); $.ajax({ url: "/Add/Add", data: { model:obj }, dataType: "json", type: "post", success: function (d) { if (d > 0) { alert("新增成功!"); location.href = '/Address/Index'; } else { alert("新增失敗!"); } } }) } //繫結下拉 省市繫結 function BandSel() { $.ajax({ url: "/Add/GetSs", data: { qid:0}, dataType: "json", type: "get", success: function (d) { $("#Ss").empty(); $(d).each(function () { var str = '<option value="' + this.Id + '">' + this.Name + '</option>'; $("#Ss").append(str); }) } }) } function BandQ() { $.ajax({ url: "/Add/GetQx", data: { qid: $("#Ss").val() }, dataType: "json", type: "get", success: function (d) { $("#q").empty(); $(d).each(function () { var str = '<option value="' + this.Id + '">' + this.Name + '</option>'; $("#q").append(str); }) } }) } </script>Add.cshtml
5.還望大佬們多多提一些修改意見,我會努力慢慢去改正的.