控制器未从ajax接收数据

时间:2019-11-15 18:53:12

标签: c# jquery asp.net-core razor asp.net-ajax

使用mvc模板学习.net核心 我有一个挑战,那就是使用ajax将一些herpers的图像和数据发送给cotrolator,他已经尝试了几种方法,但是我总是发现错误,即我的对象模型都不为null,并且在HttpContext.Request.Form中出现错误:未检测到错误类型:构建'FormData'时出错:参数1不是'HTMLFormElement'类型。我想知道是否需要在启动时初始化任何服务,或者我留下的代码有误

     <form id="formRegisterProcuct" enctype="multipart/form-data" name="formRegistrarProducto">
                    <div class="modal-body">
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.archivo)
                            @Html.TextBoxFor(d => d.ModeloProducto.archivo, "", new { type = "file", @class = "form-control", @ID = "txtImagen", @placeholder = "*******" })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.archivo, "", new { @class = "text-danger" })
                        </div>
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.nombre)
                            @Html.TextBoxFor(d => d.ModeloProducto.nombre, "", new { @class = "form-control", @ID = "txtNombre", @placeholder = "Banano" })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.nombre, "", new { @class = "text-danger" })
                        </div>
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.descripcion)
                            @Html.TextBoxFor(d => d.ModeloProducto.descripcion, "", new { @class = "form-control", @ID = "txtDescripcion", @placeholder = "Racimo de bananos " })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.descripcion, "", new { @class = "text-danger" })
                        </div>
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.catalogo)
                            @Html.DropDownListFor(d => d.ModeloProducto.catalogo, Model.listCatalogos, "", new { @class = "form-control", @ID = "dplCatalogo", @placeholder = "Verduraq" })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.catalogo, "", new { @class = "text-danger" })
                        </div>
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.cantidad_final)
                            @Html.TextBoxFor(d => d.ModeloProducto.cantidad_final, "", new { @class = "form-control", @ID = "txtCantidaFinal", @placeholder = "10" })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.cantidad_final, "", new { @class = "text-danger" })
                        </div>
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.tipoCantidad)
                            @Html.DropDownListFor(d => d.ModeloProducto.tipoCantidad, Model.listCantidad, "", new { @class = "form-control", @ID = "txtTipoCantidad", @placeholder = "Racimo" })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.tipoCantidad, "", new { @class = "text-danger" })
                        </div>
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.valor_total)
                            @Html.TextBoxFor(d => d.ModeloProducto.valor_total, "", new { @class = "form-control", @ID = "txtValorTotal", @placeholder = "100000" })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.valor_total, "", new { @class = "text-danger" })
                        </div>
                        <div class="form-group">
                            @Html.LabelFor(d => d.ModeloProducto.valor_unidad)
                            @Html.TextBoxFor(d => d.ModeloProducto.valor_unidad, "", new { @class = "form-control", @ID = "txtValorUnidad", @placeholder = "10000" })
                            @Html.ValidationMessageFor(d => d.ModeloProducto.valor_unidad, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="botonModal">
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                        <input type="submit" value="Crear" class="btn btn-warning text-white" />
                    </div>
                </form>

     $('#formRegisterProcuct').submit(function (e) {
                         e.preventDefault();
                        var URL = "@Url.Action("GuardarProducto", "Producto")";
                        var form = $(this);
                        //var datos = new FormData(document.formRegistrarProducto);
                        var datos = new FormData(document.getElementById("formRegisterProcuct"));
                        $.ajax({
                            url: URL,
                             method: form.attr("post"),
                            //data: form.serialize(),                        
                            data: datos,
                            contentType: false,
                            processData: false,
                            success: function (data) {
                            switch (data.result) {
                                case true:
                                    document.location.href = "@Url.Action("MisProductos","Producto")";
                                    break;
                                case false:
                                        $("div.message").remove();
                                        $("#alertBody").after("<div class='message'>" + data.mensaje + "</div>");
                                        $('#modalAlerta').modal('show');
                                    //Hacemos desaparecer el modal
                                    setTimeout(function () { $('#modalAlerta').modal('hide'); }, 9000);
                                    break;
                                default:
                                    $("#formRegisterProcuct").html(data);
                                    break;

                            }
                        }
                            , error: function (XMLHttpRequest, textStatus, errorThrown) {
                            console.log();
                        }
                    });
                     });


     public IActionResult GuardarProducto(Producto model, [FromServices]IDaoService DAO)
            {
                    var archivo = HttpContext.Request.Form.Keys;
                //var archivo = HttpContext.Request.Form["FormData"];}

     public class Producto
        {
            [Display(Name = "Nombre")]
            public string nombre { get; set; }

            [Display(Name = "Descripcion")]
            public string descripcion { get; set; }

            [Display(Name = "Cantidad")]
            public int cantidad_final { get; set; }

            [Display(Name = "Valor Todo")]
            public decimal valor_total { get; set; }

            [Display(Name = "Valor unidad")]
            public decimal valor_unidad { get; set; }

            [Display(Name = "Imagen")]
            public IFormFile archivo { get; set; }

            [Display(Name = "Catalogo")]
            public int catalogo { get; set; }

            [Display(Name = "Tipo")]
            public int tipoCantidad { get; set; }


            public int id_usuario { get; set; }
            public string imagen { get; set; }
        }

0 个答案:

没有答案
相关问题