通过jQuery ajax函数将javaScript数组和表单一起传递

通过jQuery ajax函数将javaScript数组和表单一起传递,javascript,jquery,asp.net-mvc,json,razor,Javascript,Jquery,Asp.net Mvc,Json,Razor,我正在使用ASP.NET MVC5应用程序。我有一个JavaScript数组“selectElementList”,它包含多个数据,我正试图使用AJAX JQuery函数将数据和表单值一起发回。在控制器中,我获取窗体值,但获取数组的空值。。。我相信我在视野方面遗漏了一些东西 JavaScript全局数组 JavaScript添加和确认函数 控制器方法 我找到了解决方案,首先我创建了变量映射类,我希望传递给控制器 public class QualificationElementComponen

我正在使用ASP.NET MVC5应用程序。我有一个JavaScript数组“selectElementList”,它包含多个数据,我正试图使用AJAX JQuery函数将数据和表单值一起发回。在控制器中,我获取窗体值,但获取数组的空值。。。我相信我在视野方面遗漏了一些东西

JavaScript全局数组 JavaScript添加和确认函数 控制器方法
我找到了解决方案,首先我创建了变量映射类,我希望传递给控制器

 public class QualificationElementComponents_ViewModel
{

    public int ElementIndex { get; set; }
    public string ElementMarkingSchemeTitle { get; set; }
    public int ElementAvailableMark { get; set; }
    public int ElementPassMark { get; set; }
    public int ElementMeritMark { get; set; }
    public int ElementDistinctionMark { get; set; }

    public IList<ElementComponent> _ElementComponent { get; set; }

}
需要确保JavaScript数组和模型类中的变量名相同。。。。i、 e.要素清单

$("#ElementTable").on("click", ".k1-grid-confirm", function () {

        var E_RecordId = $(this).data("id");
        var E_MarkingSchemeTitle = $("#" + E_RecordId + "_EMST").val();
        var E_AvailableMark = $("#" + E_RecordId + "_AM").val();
        var E_PassMark = $("#" + E_RecordId + "_PM").val();
        var E_MeritMark = $("#" + E_RecordId + "_MM").val();
        var E_DistinctionMark = $("#" + E_RecordId + "_DM").val();

        //add data to array//

        selectElementList.push({ ElementIndex: E_RecordId, ElementMarkingSchemeTitle: E_MarkingSchemeTitle, ElementAvailableMark: E_AvailableMark, ElementPassMark: E_PassMark, ElementMeritMark: E_MeritMark, ElementDistinctionMark: E_DistinctionMark });   

        for (var i = 0; i <= selectElementList.length - 1; i++) {
            alert(selectElementList[i].ElementIndex + "  " + selectElementList[i].ElementMarkingSchemeTitle + " " + selectElementList[i].ElementAvailableMark + " " + selectElementList[i].ElementPassMark + " " + selectElementList[i].ElementMeritMark + " " + selectElementList[i].ElementDistinctionMark);
        }

});
 //QualificationElementsAndComponents ???????

 function submit_createNewQualification()
{

    //alert(JSON.stringify($("#NewQualificationForm").serializeObject()));

    $.ajax({
        type: "Post",
        url: "/Qualification/CreateNewQualification",
        dataType: "json",
        contentType: "application/json; charset=utf-8",       
        data: JSON.stringify({ QualificationElementsAndComponents: selectElementList, newQualificationData: $("#NewQualificationForm").serializeObject() }),            
        success: function (data) {
            if (data == true) {
                window.location = "/Qualification/QualificationHome";
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
        }
    });

}
[HttpPost]
public ActionResult CreateNewQualification(QualificationViewModel newQualificationData, int [] QualificationElementsAndComponents)
    {
 public class QualificationElementComponents_ViewModel
{

    public int ElementIndex { get; set; }
    public string ElementMarkingSchemeTitle { get; set; }
    public int ElementAvailableMark { get; set; }
    public int ElementPassMark { get; set; }
    public int ElementMeritMark { get; set; }
    public int ElementDistinctionMark { get; set; }

    public IList<ElementComponent> _ElementComponent { get; set; }

}
 public ActionResult CreateNewQualification(QualificationViewModel newQualificationData, IList<QualificationElementComponents_ViewModel> ElementComponentList)
    {
       .......
   $.ajax({
                type: "Post",
                url: "/Qualification/CreateNewQualification",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify({ElementComponentList:selectElementList, newQualificationData: $("#NewQualificationForm").serializeObject() }),
                success: function (data) {
                    if (data == true) {
                         window.location = "/Qualification/QualificationHome";
                      }
                 },
                error: function (jqXHR, textStatus, errorThrown) {
                    }
                });

    });