二级联动:

首先在数据处理层写对应语句,

   #region 分类
       public List<GTYpe> GTYpe(int id)
        {
            return db.GTYpe.Where(p => p.GPId == id).ToList();
        }
        #endregion

对应的在控制器进行调用之后

在vue里写对应的参数和方法:

 data() {
            return {
                
                brands: [],  //品牌
                classifys:[] //分类
            }
        }

 

methods: {
            //加载分类
            getBrand() {
                axios.get('/Info/GTYpe?id=0').then(res => {
                    this.brands = res.data;
                    this.brands.unshift({ "GTId": "0", "GTName": "请选择" });
                });
            },
            //加载品牌
            getClassify() {
                //this.proData.GTId>0  代表 点击的不是请选择
                if (this.proData.GTId>0) {
                    axios.get('/Info/GTYpe?id=' + this.proData.GTId).then(res => {
                        this.classifys = res.data;
                        this.classifys.unshift({ "GTId": "0", "GTName": "请选择" });
                        this.proData.GPId = 0;  //将品牌  变成 请选择状态
                    });
                }
                this.classifys = [];
            },

在挂载函数中调用第一级下拉

 created: function () {
            this.getBrand()
        }

在表单里写对应的v_model  v-for  循环输出

 <tr>
            <td>商品分类:</td>
            <td>
                分类:
                <select v-model="proData.GTId" v-on:change="getClassify">
                    <option v-for="(item,index) in brands" :value="item.GTId">{{item.GTName}}</option>
                </select>
                品牌:
                <select v-model="proData.GPId">
                    <option v-for="(item,index) in classifys" :value="item.GTId">{{item.GTName}}</option>
                </select>
            </td>
        </tr>

 

vue的图片上传:

首先在控制器里写一个图片上传的方法:

  [HttpPost]
        public ActionResult UpLoad()
        {
            var file = Request.Files[0];
            var imgdir = Server.MapPath("/Images/");
            //if (!Directory.Exists(imgdir))
            //{
            //    Directory.CreateDirectory(imgdir);
            //}
            file.SaveAs(imgdir + file.FileName);
            return Json(new { code=1,fileName=file.FileName}, JsonRequestBehavior.DenyGet);


        }

在添加页面里,写对应的vue的方法:

  //文件上传
        [HttpPost]
        public ActionResult UpLoad()
        {
            try
            {
                //一、获取前台传过来的文件
                var file = Request.Files[0];
                //将虚拟路径转成物理路径
                var imgDir = Server.MapPath("/Images/");

                //判断你要存储的文件夹是否存在,不存在创建
                //需要引用System.IO
                if (!Directory.Exists(imgDir))
                {
                    //创建文件夹
                    Directory.CreateDirectory(imgDir);
                }
                //保存
                file.SaveAs(imgDir + file.FileName);
                return Json(new {code = 1,fileName = file.FileName,msg="" }, JsonRequestBehavior.DenyGet);
            }
            catch (Exception ex)
            {
                return Json(new { code = 0, fileName = "", msg =ex.Message },JsonRequestBehavior.DenyGet);
            }
        }

在vue里写对应的方法用来上传和接收

  //上传图片
            upLoad(event) {
                //获取图片
                let file = event.target.files[0];
                //配置头部类型
                //let config = {
                //    headers: {
                //        'Context-Type':"multipart/form-data"
                //    }
                //}

                let fd = new FormData();
                fd.append("file", file);

                axios.post('/Info/UpLoad', fd).then(res => {
                    if (res.data.code > 0) {
                        this.proData.ImgUrl = res.data.fileName;
                        alert('上传成功')
                    } else {
                        alert(res.data.msg)
                    }
                })


               
            },

在表单里修改对应的数据

<tr>
            <td>商品图:</td>
            <td><input type="file" value=""  v-on:change="upLoad" /></td>
        </tr>

 

 

Vue添加--图片  二级联动_json