I can not send my data from a dynamic table in C # mvc

0

Good, I have a question. I can not send the data entered by the user in my pivot table to my MVC controller and C # in my view I have the following:

Function that creates the Dynamic table:

function fn_agregar() {
   cadena = "<tr>";
   cadena = cadena + "<td><input style='font - size: 20px; font - weight: 700;' class='form - control' type='text' name='COD_CLASIFICADOR[]' value='" + alias("#COD_CLASIFICADOR").val() + "' readonly required></td>";
   cadena = cadena + "<td><input style='font - size: 20px; font - weight: 700;' class='form - control' type='text' name='COD_ITEM[]' value='" + alias("#COD_ITEM").val() + "' readonly required></td>";
   cadena = cadena + "<td><input style='font - size: 20px; font - weight: 700;' class='form - control' type='text' name='NOMBRE[]' value='" + alias("#NOMBRE").val() + "' readonly required></td>";
   cadena = cadena + "<td><input style='font - size: 20px; font - weight: 700;' class='form - control' type='text' name='VALOR_UNITARIO[]' value='" + alias("#VALOR_UNITARIO").val() + "' readonly required></td>";
   cadena = cadena + "<td><input style='font - size: 20px; font - weight: 700;' class='form - control' type='text' id='CANTIDAD2' name='CANTIDAD[]' value='" + alias("#CANTIDAD").val() + "' readonly required></td>";
   cadena = cadena + "<td><input style='font - size: 20px; font - weight: 700;' class='form - control' type='text' name='VALOR_BRUTO[]' value='" + alias("#VALOR_BRUTO").val() + "' readonly required></td>";
   cadena = cadena + "<td><input style='font - size: 20px; font - weight: 700;' class='form - control' type='text' name='VALOR_TOTAL[]' value='" + alias("#VALOR_TOTAL").val() + "' readonly required></td>";
   cadena = cadena + "<td><a class='elimina'><button class='btn btn-danger' type='button'><span class='fa fa-remove'></span></button></a></td>";
        alias("#detalles tbody").append(cadena);
   fn_eliminar();
   sumar();
   limpiar();    
};

function limpiar() {
   document.getElementById("COD_CLASIFICADOR").value = "";
   document.getElementById("COD_ITEM").value = "";
   document.getElementById("NOMBRE").value = "";
   document.getElementById("VALOR_UNITARIO").value = "";
   document.getElementById("CANTIDAD").value = "";
   document.getElementById("VALOR_BRUTO").value = "";
   document.getElementById("VALOR_TOTAL").value = "";
}

function fn_eliminar() {
   alias("a.elimina").click(function () {
      valor = alias(this).parents("tr").find("td").eq(5).html();
         alias(this).parents("tr").fadeOut("normal", function () {
         alias(this).remove();
         restar();
      })
   });
};

The function that sends the data

//Collect Multiple Order List For Pass To Controller
   alias("#saveOrder").click(function (e) {
      debugger;
      e.preventDefault();

      // var orderArr = [];
      // orderArr.length = 0;

      var orderArr = new Array;
      alias.each(alias("#detalles tbody"), function () {
         orderArr.push({
            COD_CLASIFICADOR: alias(this).find('td:eq(0)').html(),
            COD_ITEM: alias(this).find('td:eq(1)').html(),
            VALOR_UNITARIO: alias(this).find('td:eq(3)').html(),
            CANTIDAD: alias(this).find('td:eq(4)').html(),
            VALOR_BRUTO: alias(this).find('td:eq(5)').html(),
            VALOR_TOTAL: alias(this).find('td:eq(6)').html()
         });
      });

//After Click Save Button Pass All Data View To Controller For Save Database
   function saveOrder(data) {
      return alias.ajax({
         contentType: 'application/json; charset=utf-8',
         dataType: 'json',
         type: 'POST',
         url: "/Cotizacion/Create",
         data: data,
         success: function (result) {
            alert(result);
            location.reload();
         },
         error: function () {
            alert("Error!")    }
         });
      };

      var data = JSON.stringify(orderArr);

      alias.when(saveOrder(data)).then(function (response) {
         console.log(response);
      }).fail(function (err) {
         console.log(err);
      });
   });

My controller

public JsonResult Create(CB_COTIZACION cB_COTIZACION, Detalle[] data)
{
   foreach (var item in data)
   {
      if (ModelState.IsValid)
      {
         cB_COTIZACION.NUM_COTIZACION = cb_cotizazion;
         cB_COTIZACION.COD_CLIENTE = cB_COTIZACION.COD_CLIENTE;
         cB_COTIZACION.COD_VENDEDOR = cB_COTIZACION.COD_VENDEDOR;
         cB_COTIZACION.VALOR_BRUTO = item.VALOR_BRUTO;
         cB_COTIZACION.VALOR = item.VALOR_TOTAL;
      }
    );
    db.CB_COTIZACION.Add(cB_COTIZACION);

In the Model

{
   public class MVCJsonPost
   {
   }

   public class Detalle
   {
      public string COD_CLASIFICADOR { get; set; }
      public string COD_ITEM { get; set; }
      public decimal VALOR_UNITARIO { get; set; }
      public int CANTIDAD { get; set; }
      public decimal VALOR_BRUTO { get; set; }
      public decimal VALOR_TOTAL { get; set; }
   }
}
    
asked by Ruben Padron 10.12.2018 в 18:44
source

1 answer

0

In your controller you should be able to pass the data in this way, although when calling the controller's method, you are passing through two variables that when you make the request in ajax, you do not put it. To receive the data in the data parameter, you will have to modify your method a bit so that you receive it from the body:

[Route("Cotizacion/Create")] [HttpPost] public JsonResult Create(CB_COTIZACION cB_COTIZACION,[System.Web.Http.FromBody]Detalle[] data) { foreach (var item in data) { if (ModelState.IsValid) { cB_COTIZACION.NUM_COTIZACION = cb_cotizazion; cB_COTIZACION.COD_CLIENTE = cB_COTIZACION.COD_CLIENTE; cB_COTIZACION.COD_VENDEDOR = cB_COTIZACION.COD_VENDEDOR; cB_COTIZACION.VALOR_BRUTO = item.VALOR_BRUTO; cB_COTIZACION.VALOR = item.VALOR_TOTAL; } ); db.CB_COTIZACION.Add(cB_COTIZACION);

I hope it helps you

    
answered by 04.01.2019 в 14:41