使用 Formdata 和 C# 使用 jquery 发送图像文件和安排

问题描述 投票:0回答:1

我试图用Ajax发送一些图像文件、一个数组和一个列表,但是当我在维护者中读取它时,它没有向我传递列表的值,该值为null。该程序是在vs 2022 c# mvc中开发的。我使用的代码是:

                var ImagenSeleccionada1 = $("#fileProducto1")[0].files[0];
                var ImagenSeleccionada2 = $("#fileProducto2")[0].files[0];
                var ImagenSeleccionada3 = $("#fileProducto3")[0].files[0];
                var numero = $("#txtNumero").val();

                var transaccion = {
                    movUser : "@User.Identity.Name",
                    movIdTransaction: "2",
                    movNumero: numero,
                    movEntidad: $("#cbbentidad").val()
                }

                var lista_conceptos = [];

                $("#tabla tbody tr").each(function (index) {
                    var concepto = $(this).find("td").eq(0).html();
                    var check = $(this).find("input").prop('checked');
                    var calificacion ="NO CUMPLE"
                    if (check) {
                        calificacion = "CUMPLE";
                    }
 lista_conceptos.push({
    movNumero: numero,  
    movIdTransaction: 2,
    movConcepto: concepto,
    movCalificacion: calificacion,
     })
 })

console.log(lista_conceptos)

var request = new FormData();
request.append("objeto", JSON.stringify(transaction));
request.append("listaconceptos", JSON.stringify(lista_conceptos));
request.append("archivoImagen1", ImagenSeleccionada1);
request.append("archivoImagen2", ImagenSeleccionada2);
request.append("archivoImagen3", ImagenSeleccionada3);

//SEND TRANSACTION
 jQuery.ajax({
     url: '@Url.Action("RegistrarInspeccion", "Transactions")',
     type: "POST",
     data: request,
     processData: false,
     contentType: false,
     success: function (data) {
                     }
                 });

在控制器中,我必须接收数据的代码如下,我尝试了几种选项,最接近的是这个,对象变量向我显示了排列,但概念列表列表不包含数据,计数器为零。在维护者调用之前,可以在console.log中看到列表数据,包括请求中发送的参数。

[HttpPost]
        public async Task<JsonResult> RegistrarInspeccion(string objeto, List<EntidadDetalleTransaccion> listaconceptos, HttpPostedFileBase archivoImagen1, HttpPostedFileBase archivoImagen2, HttpPostedFileBase archivoImagen3)

`

我尝试在没有 Formdata 的情况下发送数据,但图像出现错误。

我尝试将参数作为字符串传递,用逗号分隔数据,然后将字符串转换为列表,但它显示了一条错误消息 错误(活动)CS1503 参数 1:无法从 'string[]' 转换为 'int' 。 我编写的代码如下:

public async Task<jsonresult> RegistrarInspeccion(string objeto, string listaconceptos, HttpPostedFileBase archivoImagen1, HttpPostedFileBase archivoImagen2, HttpPostedFileBase archivoImagen3)

char delimiter = ',';
string[] substrings = listaconceptos.Split(delimiter);
List<entidaddetalletransaccion> myList = new 
List<entidaddetalletransaccion>(substrings);
c# jquery arraylist
1个回答
0
投票

已尝试添加

[FromBody]

[HttpPost]
public async Task<JsonResult> RegistrarInspeccion(string objeto, List<EntidadDetalleTransaccion> listaconceptos, [FromBody]HttpPostedFileBase archivoImagen1, [FromBody]HttpPostedFileBase archivoImagen2, [FromBody]HttpPostedFileBase archivoImagen3)
© www.soinside.com 2019 - 2024. All rights reserved.