Передача параметров объекта из представления cshtml в контроллер в ядре ASP.net - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь передать некоторые значения объекта из представления MVC в мой контроллер. Но возникают проблемы, что значения не могут быть переданы моему контроллеру, поскольку он продолжает жаловаться, что значения не передаются? Есть ли что-то, что мне нужно обратить внимание на форматирование типов объектов или некоторые настройки кодирования здесь?

Код от контроллера

public class saveViewModel
{
  public List<NgpartDetails> ngpartDetails { get; set; }
  public List<GeneralDetails> generalDetails { get; set; }  
}

[HttpPost]
public void MyActionSubmit(saveViewModel viewModel)
{ 

    foreach (var ngpartdetail in viewModel.ngpartDetails)
    {
        NgpartDetails Ng1 = new NgpartDetails { Number = ngpartdetail.Number,
        Quantity = ngpartdetail.Quantity, Reason = ngpartdetail.Reason, Nghandling = ngpartdetail.Nghandling,
        Remarks = ngpartdetail.Remarks };

        efngpartdetails.NgpartDetail.Add(Ng1);
    }

    efngpartdetails.SaveChanges();

}

код JavaScript

$("body").on("click", "#buttonSubmit", function () {
    console.log("button submit clicked")

    var generalDetails = [];
    generalDetails.push({
        Date: $("#date").val(),
        LotNo: $("#lotno").val(),
        PartName: $("#partname").val(),
        LotProductionDate: $("#lotproductiondate").val(),
        Number: $("#partno").val(),
        ImportQty:$("#importquantity").val()
    })

    var ngpartDetails = [];

    $("#ngpartdetails TR.data-row").each(function () {
        var row = $(this);
        ngpartDetails.push({
            Number : row.find("TD").eq(0).html(),
            Quantity : row.find("TD").eq(1).html(),
            Reason : row.find("TD").eq(2).html(),
            Nghandling : row.find("TD").eq(3).html(),
            Remarks : row.find("TD").eq(4).html()
        });

    });

    var viewModel = {
        ngpartDetails: ngpartDetails,
        generalDetails: generalDetails
    }


    $.ajax({
        type: "POST",
        url: "/Home/MyActionSubmit",
        data: "{'viewModel':" + JSON.stringify(viewModel) + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function () {
            alert("Successfully sent ngpartdetails to controller.");
        },
        error: function () {
            alert("Passing data to controller failed");
        }
    });
});

Я ожидал, что данные viewModel будут успешно переданы в контроллер, но при отладке он говорит, что viewModel содержит нулевые объекты на моем контроллере.

...