model
public int Id { get; set; }
        public string Name { get; set; }
        public int PId { get; set; }
 public int Id { get; set; }
        public string Name { get; set; }
        public string Phone { get; set; }
        public int P { get; set; }
        public int C { get; set; }
        public int A { get; set; }
        public string Detail { get; set; }
        //存储三个外键对应的值
        public string PName { get; set; }
        public string CName { get; set; }
        public string AName { get; set; }
dal//绑定下拉框
        public List<PCA> BindSelect(int Id)
        {
            string sql = $"select * from PCA where PId={Id}";
            List<PCA> list = JsonConvert.DeserializeObject<List<PCA>>(JsonConvert.SerializeObject(DBhelper.GetTable(sql)));
            return list;
        }
 //添加地址接口
        public int Address(AddressInfo info)
        {
            string sql = $"insert into AddressInfo values(‘{info.Name}‘,‘{info.Phone}‘,{info.P},{info.C},{info.A},‘{info.Detail}‘)";
            int result = DBhelper.ExecuteNonQuery(sql);
            return result;
        }
        //显示列表
        public List<AddressInfo> ListShow()
        {
            string sql = $"select *,P.Name as PName,C.Name as CName,A.Name as AName from AddressInfo info inner join PCA P on info.P=P.Id inner join PCA C on info.C=C.Id inner join PCA A on info.A=A.Id";
            List<AddressInfo> list = JsonConvert.DeserializeObject<List<AddressInfo>>(JsonConvert.SerializeObject(DBhelper.GetTable(sql)));
            return list;
        }
        //删除地址信息
        public int DelAddressInfoById(int Id)
        {
            string sql = $"delete from AddressInfo where Id={Id}";
            int result = DBhelper.ExecuteNonQuery(sql);
            return result;
        }
        //修改地址信息
        public int UpdAddressInfo(AddressInfo info)
        {
            string sql = $"update AddressInfo set Name=‘{info.Name}‘, Phone=‘{info.Phone}‘,P={info.P},C={info.C},A={info.A},Detail=‘{info.Detail}‘ where Id={info.Id}";
            int result = DBhelper.ExecuteNonQuery(sql);
            return result;
        }
api
 [HttpGet]
        //绑定下拉框
        public List<PCA> BindSelect(int Id)
        {
            return dal.BindSelect(Id);
        }
 //添加地址接口
        [HttpPost]
        public int Address(AddressInfo info)
        {
            return dal.Address(info);
        }
        [HttpGet]
        //显示列表
        public List<AddressInfo> ListShow()
        {
            return dal.ListShow();
        }
        [HttpPost]
        //删除地址信息
        public int DelAddressInfoById(int Id)
        {
            return dal.DelAddressInfoById(Id);
        }
        [HttpPost]
        //修改地址信息
        public int UpdAddressInfo(AddressInfo info)
        {
            return dal.UpdAddressInfo(info);
        }
mvc
 [HttpGet]
        public ActionResult Edit(int Id)
        {
            string jsonResult = HttpClientHelper.SendRequest("api/AddressInfo/ListShow", "get");
            List<AddressInfo> list = JsonConvert.DeserializeObject<List<AddressInfo>>(jsonResult);
            AddressInfo info = list.Where(s => s.Id == Id).FirstOrDefault();
            return View(info);
        }
        [HttpPost]
        public ActionResult Edit(AddressInfo info)
        {
            string json = JsonConvert.SerializeObject(info);
            string jsonResult = HttpClientHelper.SendRequest("api/AddressInfo/UpdAddressInfo", "post", json);
            if (Convert.ToInt32(jsonResult) > 0)
            {
                Response.Write("<script>alert(‘修改成功‘)</script>");
            }
            else
            {
                Response.Write("<script>alert(‘修改失败‘)</script>");
            }
            return View();
        }
        //以下皆为链接方法
        //绑定下拉框
        public string GetPCA(int Id = 0)
        {
            string jsonResult = HttpClientHelper.SendRequest($"api/PCA/BindSelect/{Id}", "get");
            List<PCA> list = JsonConvert.DeserializeObject<List<PCA>>(jsonResult);
            return JsonConvert.SerializeObject(list);
        }
        //获取所有地址列表方法
        [HttpGet]
        public string GetAddressInfo()
        {
            string jsonResult = HttpClientHelper.SendRequest("api/AddressInfo/ListShow", "get");
            List<AddressInfo> list = JsonConvert.DeserializeObject<List<AddressInfo>>(jsonResult);
            return JsonConvert.SerializeObject(list);
        }
        //添加地址的方法
        [HttpPost]
        public void AddAddressInfo(AddressInfo info)
        {
            string json = JsonConvert.SerializeObject(info);
            string jsonResult = HttpClientHelper.SendRequest("api/AddressInfo/Address", "post", json);
            if (Convert.ToInt32(jsonResult) > 0)
            {
                Response.Write("<script>alert(‘添加成功‘);location.href=‘/AddressInfo/Index‘;</script>");
            }
            else
            {
                Response.Write("<script>alert(‘添加失败‘);location.href=‘/AddressInfo/Index‘;</script>");
            }
        }
        //删除方法
        public void DelAddressInfo(int Id)
        {
            string jsonResult = HttpClientHelper.SendRequest($"api/AddressInfo/DelAddressInfoById/{Id}", "post");
            if (Convert.ToInt32(jsonResult) > 0)
            {
                Response.Write("<script>alert(‘删除成功‘);location.href=‘/AddressInfo/Index‘;</script>");
            }
            else
            {
                Response.Write("<script>alert(‘删除失败‘);location.href=‘/AddressInfo/Index‘;</script>");
            }
html
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <link href="~/Content/layui/css/layui.css" rel="stylesheet" />
</head>
<body>
    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
        <legend>地址管理/Address list</legend>
    </fieldset>
    <table id="th" class="layui-table"></table>
    <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
        <legend>新增地址/Add address</legend>
    </fieldset>
    <form action="/AddressInfo/AddAddressInfo" method="post" @*class="layui-form"*@>
        <div class="layui-form-item">
            <label class="layui-form-label">收货人</label>
            <div class="layui-input-block">
                <input type="text" name="Name" lay-verify="title" autocomplete="off" placeholder="收货人" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">手机号码</label>
            <div class="layui-input-block">
                <input type="text" name="Phone" lay-verify="title" autocomplete="off" placeholder="手机号必填" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">所在地</label>
            <div class="layui-input-inline">
                <select name="P" id="P" onchange="BindC()">
                    <option>请选择</option>
                </select>
            </div>
            <div class="layui-input-inline">
                <select name="C" id="C" onchange="BindA()">
                    <option>请选择</option>
                </select>
            </div>
            <div class="layui-input-inline">
                <select name="A" id="A">
                    <option>请选择</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item layui-form-text">
            <label class="layui-form-label">详细地址</label>
            <div class="layui-input-block">
                <textarea placeholder="输入详细地址" class="layui-textarea" name="Detail"></textarea>
                <p>100字以内写出你的详细地址</p>
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <input type="submit" class="layui-btn" value="保存" />
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
    </form>
</body>
</html>
<script src="~/Content/layui/layui.js"></script>
<script src="~/Scripts/jquery-3.3.1.js"></script>
<script>
    $().ready(function () {
        Show();
        BindP();
        BindC();
        BindA();
    });
    //显示列表
    function Show() {
        $.ajax({
            url: "/AddressInfo/GetAddressInfo",
            type: "get",
            dataType: "json",
            success: function (data) {
                debugger;
                $("#th").empty();
                for (var i = 1; i <= data.length; i++) {
                    var str = data[i].PName + "  " + data[i].CName + "  " + data[i].AName + "  " + data[i].Detail;
                    if (i % 3 == 1)
                    {
                        $("#th").append("<tr><td><table style=‘border:1px solid #00FF00;margin-right:20px;‘ ><tr><td><i class=‘layui-icon layui-icon-username‘ style=‘font-size:14px;color:green;‘ ></i> " + data[i].Name + "</td><td colspan=‘2‘><i class=‘layui-icon layui-icon-cellphone‘ style=‘float:left‘ ></i><p style=‘color:red;‘ >" + data[i].Phone + "</p></td></tr><tr><td rowspan=‘2‘ ><i class=‘layui-icon layui-icon-location‘ ></i>地址:</td><td colspan=‘2‘ >" + str + "</td></tr><tr><td colspan=‘3‘ ></td></tr><tr><td></td><td><i class=‘layui-icon layui-icon-edit‘ ></i><input type=‘button‘ value=‘编辑‘onclick=‘Edit(" + data[i].Id + ")‘ /></td><td><i class=‘layui-icon layui-icon-delete‘></i><input type=‘button‘ value=‘删除‘ onclick=‘Del(" + data[i].Id + ")‘ ></td></tr></table></td>");
                    }
                    else if (i % 3 == 0 || i == data.length)
                    {
                        $("#th").append("<td><table style=‘border:1px solid #00FF00;margin-right:20px;‘ ><tr><td><i class=‘layui-icon layui-icon-username‘ style=‘font-size:14px;color:green;‘ ></i> " + data[i].Name + "</td><td colspan=‘2‘><i class=‘layui-icon layui-icon-cellphone‘ style=‘float:left‘ ></i><p style=‘color:red;‘ >" + data[i].Phone + "</p></td></tr><tr><td rowspan=‘2‘ ><i class=‘layui-icon layui-icon-location‘ ></i>地址:</td><td colspan=‘2‘ >" + str + "</td></tr><tr><td colspan=‘3‘ ></td></tr><tr><td></td><td><i class=‘layui-icon layui-icon-edit‘ ></i><input type=‘button‘ value=‘编辑‘onclick=‘Edit(" + data[i].Id + ")‘ /></td><td><i class=‘layui-icon layui-icon-delete‘></i><input type=‘button‘ value=‘删除‘ onclick=‘Del(" + data[i].Id + ")‘ ></td></tr></table></td></tr>");
                    }
                    else
                    {
                        $("#th").append("<td><table style=‘border:1px solid #00FF00;margin-right:20px;‘ ><tr><td><i class=‘layui-icon layui-icon-username‘ style=‘font-size:14px;color:green;‘ ></i> " + data[i].Name + "</td><td colspan=‘2‘><i class=‘layui-icon layui-icon-cellphone‘ style=‘float:left‘ ></i><p style=‘color:red;‘ >" + data[i].Phone + "</p></td></tr><tr><td rowspan=‘2‘ ><i class=‘layui-icon layui-icon-location‘ ></i>地址:</td><td colspan=‘2‘ >" + str + "</td></tr><tr><td colspan=‘3‘ ></td></tr><tr><td></td><td><i class=‘layui-icon layui-icon-edit‘ ></i><input type=‘button‘ value=‘编辑‘onclick=‘Edit(" + data[i].Id + ")‘ /></td><td><i class=‘layui-icon layui-icon-delete‘></i><input type=‘button‘ value=‘删除‘ onclick=‘Del(" + data[i].Id + ")‘ ></td></tr></table></td>");
                    }
                }
            }
        });
    }
    //绑定P下拉框
    function BindP() {
        $.ajax({
            url: "/AddressInfo/GetPCA",
            type: "get",
            dataType: "json",
            success: function (data) {
                $("#P").empty();
                $("#P").append("<option value=‘‘ >请选择</option>");
                for (var i = 0; i < data.length; i++) {
                    $("#P").append("<option value=‘" + data[i].Id + "‘ >" + data[i].Name + "</option>");
                }
            }
        })
    }
    //绑定C下拉框
    function BindC() {
        var Id = $("#P").val();
        $.ajax({
            url: "/AddressInfo/GetPCA?Id=" + Id,
            type: "get",
            dataType: "json",
            success: function (data) {
                $("#C").empty();
                $("#C").append("<option value=‘‘ >请选择</option>");
                for (var i = 0; i < data.length; i++) {
                    $("#C").append("<option value=‘" + data[i].Id + "‘ >" + data[i].Name + "</option>");
                }
            }
        })
    }
    //绑定A下拉框
    function BindA() {
        var Id = $("#C").val();
        $.ajax({
            url: "/AddressInfo/GetPCA?Id=" + Id,
            type: "get",
            dataType: "json",
            success: function (data) {
                $("#A").empty();
                $("#A").append("<option value=‘‘ >请选择</option>");
                for (var i = 0; i < data.length; i++) {
                    $("#A").append("<option value=‘" + data[i].Id + "‘ >" + data[i].Name + "</option>");
                }
            }
        })
    }
    //删除地址
    function Del(Id) {
        if (window.confirm("确定要删除吗?")) {
            location.href = ‘/AddressInfo/DelAddressInfo?Id=‘ + Id;
        }
    }
    //修改地址
    function Edit(Id)
    {
        if (window.confirm("确定要修改吗?")) {
            location.href = ‘/AddressInfo/Edit?Id=‘ + Id;
        }
    }
</script> 
@model MVC.Models.AddressInfo
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Edit</title>
</head>
<body>
    <form action="/AddressInfo/Edit" method="post" @*class="layui-form"*@>
        <div class="layui-form-item">
            <label class="layui-form-label">收货人</label>
            <div class="layui-input-block">
                <input type="text" name="Name" value="@Model.Name" lay-verify="title" autocomplete="off" placeholder="收货人" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">手机号码</label>
            <div class="layui-input-block">
                <input type="text" name="Phone" value="@Model.Phone" lay-verify="title" autocomplete="off" placeholder="手机号必填" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">所在地</label>
            <div class="layui-input-inline">
                <select name="P" id="P" onchange="BindC()">
                    <option>请选择</option>
                </select>
            </div>
            <div class="layui-input-inline">
                <select name="C" id="C" onchange="BindA()">
                    <option>请选择</option>
                </select>
            </div>
            <div class="layui-input-inline">
                <select name="A" id="A">
                    <option>请选择</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item layui-form-text">
            <label class="layui-form-label">详细地址</label>
            <div class="layui-input-block">
                <textarea placeholder="输入详细地址" class="layui-textarea" name="Detail">@Model.Detail</textarea>
                <p>100字以内写出你的详细地址</p>
            </div>
        </div>
        <div class="layui-form-item">
            <div class="layui-input-block">
                <input type="submit" class="layui-btn" value="确认修改" />
                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
            </div>
        </div>
    </form>
</body>
</html>
<script>
    $().ready(function () {
        BindP();
        BindC();
        BindA();
    });
    //绑定P下拉框
    function BindP() {
        $.ajax({
            url: "/AddressInfo/GetPCA",
            type: "get",
            dataType: "json",
            success: function (data) {
                $("#P").empty();
                $("#P").append("<option value=‘‘ >请选择</option>");
                for (var i = 0; i < data.length; i++) {
                    $("#P").append("<option value=‘" + data[i].Id + "‘ >" + data[i].Name + "</option>");
                }
                $("#P").val(@Model.P);
            }
        })
    }
    //绑定C下拉框
    function BindC() {
        var Id = $("#P").val();
        $.ajax({
            url: "/AddressInfo/GetPCA?Id=" + Id,
            type: "get",
            dataType: "json",
            success: function (data) {
                $("#C").empty();
                $("#C").append("<option value=‘‘ >请选择</option>");
                for (var i = 0; i < data.length; i++) {
                    $("#C").append("<option value=‘" + data[i].Id + "‘ >" + data[i].Name + "</option>");
                }
                $("#C").val(@Model.C);
            }
        })
    }
    //绑定A下拉框
    function BindA() {
        var Id = $("#C").val();
        $.ajax({
            url: "/AddressInfo/GetPCA?Id=" + Id,
            type: "get",
            dataType: "json",
            success: function (data) {
                $("#A").empty();
                $("#A").append("<option value=‘‘ >请选择</option>");
                for (var i = 0; i < data.length; i++) {
                    $("#A").append("<option value=‘" + data[i].Id + "‘ >" + data[i].Name + "</option>");
                }
                $("#A").val(@Model.A);
            }
        })
    }
</script>
原文:https://www.cnblogs.com/m151/p/10816277.html