element UI表单组件,axios,请求到asp.net core 控制器,控制器无法接收到数据问题

页面代码

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" >

    <el-form-item label="商品名称" prop="CommodityName">
        <el-input v-model="ruleForm.CommodityName" ></el-input>
    </el-form-item>


    <el-form-item label="商品类型" prop="CommodityType">
        <el-select v-model="ruleForm.CommodityType" placeholder="请选择商品类型" >
            <el-option label="一级" value="yiji"></el-option>
            <el-option label="二级" value="erji"></el-option>
            <el-option label="三级" value="sanji"></el-option>
            <el-option label="次品" value="cipin"></el-option>
        </el-select>
    </el-form-item>

    <el-form-item label="商品价格" prop="CommodityPrice">
        <el-input v-model="ruleForm.CommodityPrice"></el-input>
    </el-form-item>

    <el-form-item label="商品数量" prop="CommodityNumber">
        <el-input-number v-model="ruleForm.CommodityNumber" v-on:change="handleChange" :min="1" :max="99" label="描述文字" ></el-input-number>
    </el-form-item>

    <el-form-item label="商品详情" prop="CommodityDetails">
        <el-input  type="textarea" v-model="ruleForm.CommodityDetails" asp-for="CommodityDetails"  ></el-input>
    </el-form-item>

    <el-form-item label="商品图片" prop="img">
        <el-upload class="upload-demo"
                   @*上传的地址*@
                   action=" "
                   v-on:preview="handlePreview"
                   v-on:remove="handleRemove"
                   :file-list="ruleForm.CommodityPhoto"
                   list-type="picture"
                   :auto-upload="false">
            <el-button size="small" type="primary">点击上传</el-button>
            <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
        </el-upload>
    </el-form-item>

    <el-form-item>
        <el-button type="primary" v-on:click="submitForm">立即添加</el-button>
        <el-button v-on:click="resetForm('ruleForm')">重置</el-button>
    </el-form-item>

</el-form>

请求代码

<script>
        new Vue({
            el: '#app',
            data() {
                return {
                    ruleForm: {
                        CommodityName: '',
                        CommodityType: '',
                        CommodityDetails: '',
                        CommodityNumber: 1,
                        CommodityPhoto: [],
                        CommodityPrice: ''
                    },
                    rules: {
                        CommodityName: [
                            { required: true, message: '请输入商品名称', trigger: 'blur' },
                            { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
                        ],
                        CommodityType: [
                            { required: true, message: '请选择商品类型', trigger: 'change' }
                        ],
                        CommodityDetails: [
                            { required: true, message: '请填写商品详情', trigger: 'blur' }
                        ],
                        CommodityPrice: [
                            { required: true, message: '请填写商品价格', trigger: 'blur' }
                        ]

                    }
                };
            },

            methods: {
                submitForm() {
                    console.log(this.ruleForm)
                    let params = {
                        CommodityName: this.ruleForm.CommodityName,
                        CommodityType: this.ruleForm.CommodityType,
                        CommodityDetails: this.ruleForm.CommodityDetails,
                        CommodityNumber: this.ruleForm.CommodityNumber,
                        CommodityPhoto: this.ruleForm.CommodityPhoto,
                        CommodityPrice: this.ruleForm.CommodityPrice
                    }
                    axios.post('https://localhost:5001/home/create', params).then(res => {

                    })

控制器代码

        [HttpPost]
        public IActionResult Create([FromBody] CommodityAddViewModel model)
        {
            Console.WriteLine(model);
            commodity newcommodity = new commodity
            {
                CommodityName = model.CommodityName,
                CommodityType = model.CommodityType,
                CommodityPrice = model.CommodityPrice,
                CommodityNumber = model.CommodityNumber,
                CommodityDetails = model.CommodityDetails,
                CommodityPhoto = model.CommodityPhoto
            };
            _commodityRepository.Add(newcommodity);
            return RedirectToAction("Index");
        }

运行后,拿不到请求发送的数据。

原因:
表单中存在一个element的上传组件,所以无法拿到数据

在这里插入图片描述
解决方法:
1、
将请求修改成

             axios({
                        method: 'post',
                        url: 'https://localhost:5001/home/create',
                        headers: {
                            'Content-Type': 'multipart/form-data'
                        },
                        data: {
                            CommodityName: this.ruleForm.CommodityName,
                            CommodityType: this.ruleForm.CommodityType,
                            CommodityDetails: this.ruleForm.CommodityDetails,
                            CommodityNumber: this.ruleForm.CommodityNumber,
                            CommodityPhoto: this.ruleForm.CommodityPhoto,
                            CommodityPrice: this.ruleForm.CommodityPrice
                        },
                        transformRequest: [function (data, headers) {
                            const formData = new FormData()
                            for (const key of Object.keys(data)) {
                                formData.append(key, data[key] === null ? '' : data[key])
                            }
                            return formData
                        }]
                    });

加入一段代码即可运行。

2、
将页面上传组件删除即可成功拿到数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值