Передача формы сериализации и списка контроллеру не работает? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть такой контроллер:

 public ActionResult SaveWorkOrder(DTO_WorkOrder objWork, List<DTO_PartsWO> listTry)
 {
    //something
 }

и модель:

 public class DTO_WorkOrder
 {
    public string Id { get; set; }
    public string WoNo { get; set; }
    public string ReqNo { get; set; }
    public string ReqSparepartDate { get; set; }
    public List<DTO_PartsWO> PartsList { get; set; }
 }

Это мой javascript для передачи данных в контроллер:

 function SaveWorkOrder() 
 {
    debugger;
    var dd = $('#tbParts').DataTable().rows().data().toArray();
    var vDataDet = new Array();

    //Loop through the Table rows and build a JSON array.
    $.each(dd, function (i, value) {
         debugger;
         var dataDetail = {};
         dataDetail.Line = i;
         dataDetail.PartCode = value[1];
         dataDetail.PartDesc = value[2];

         vDataDet.push(dataDetail);
         debugger;
    });

    var tmp = $('#WorkOrderForm').serialize();

    $.ajax({
       type: 'POST',
       url: '/Transactions/WorkOrder/SaveWorkOrder',
       data:  JSON.stringify({ objWork: tmp, listTry: vDataDet}),
       success: function (mdl)
       {
          debugger;
       },
       error: function (mdl)
       {
          debugger;
       }
    )}
 }

коды проходят форму сериализации, но не список, мой список нулевой ... пожалуйста, помогите, код уже 3 дня, чтобы передать форму списка и сериализации, но не работает

1 Ответ

0 голосов
/ 27 апреля 2020

Я не знаю, правильный ли это путь, но он работает нормально, вместо этого используется serialize, serializeArray хорошо работает, поэтому я могу добавить параметр списка в форму, поэтому я использую код:

function SaveWorkOrder() 
{
    debugger;
    var dd = $('#tbParts').DataTable().rows().data().toArray();
    var vDataDet = new Array();

    // step 1 serialize array the form
    var data = $("#WorkOrderForm").serializeArray();

    //Loop through the Table rows and build a JSON array.
    $.each(dd, function (i, value) {
       debugger;

       data[data.length] = { name: "PartsList[" + i + "].Line", value: i };    
       data[data.length] = { name: "PartsList[" + i + "].PartCode", value: value[1] };  
       data[data.length] = { name: "PartsList[" + i + "].PartName", value: value[2] };  
       debugger;
    });

    $.ajax({
        type: 'POST',
        url: '/Transactions/WorkOrder/SaveWorkOrder',
        data: data,
        success: function (mdl)
        {
           debugger;
        },
        error: function (mdl)
        {
           debugger;
        }
     })
}

Это контроллер:

 public ActionResult SaveWorkOrder(DTO_WorkOrder objWork)
 {
    //something
 }

Это модели:

 public class DTO_WorkOrder
 {
    public string Id { get; set; }
    public string WoNo { get; set; }
    public string ReqNo { get; set; }
    public string ReqSparepartDate { get; set; }
    public List<DTO_PartsWO> PartsList { get; set; }
 }

 public class DTO_PartsWO
 {
    public string WoNo { get; set; }
    public Int32 Line { get; set; }
    public string PartCode { get; set; }
    public string PartName { get; set; }
 }

вы можете увидеть результат на картинке Список в объекте и подробный список .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...