1. 程式人生 > 實用技巧 >關於c#購物車的地址的增刪改查(mvc,詳細註釋)

關於c#購物車的地址的增刪改查(mvc,詳細註釋)

就是簡簡單單的增刪改查,也沒什麼特殊的或者特別難的業務邏輯,二級聯動用一張表的自連線做的,註釋都加在程式碼中了,不多說了,程式碼如下:

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; }
        public
string AName { get; set; } public string Area { get; set; } public string Dzhi { get; set; } public string hanSet { get; set; } } }
ShAddress

二級聯動用的區域表:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace G5.Exam03.Day12.Models
{
    
public class Qy { public int Id { get; set; } public string Name { get; set; } public int QId { get; set; } } }
Qy

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
{
    
public 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); } } }
AddressDal

省市及新增,反填的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.還望大佬們多多提一些修改意見,我會努力慢慢去改正的.