使用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; }
}