如何将jQuery数组对象传递给Controller方法

时间:2017-08-16 12:02:59

标签: jquery asp.net-mvc

您好我有一个视图,我在其中编写了一个jquery脚本,将html表值传递给JSON对象,如下所示;

            var contactData = [];
            $('#tblContacts > tbody > tr').each(function () {
                contactData.push({
                    firstName: $(this).find('input.c-firstname').val(),
                    lastname: $(this).find('input.c-lastname').val(),
                    phone: $(this).find('input.c-phone').val(),
                    email: $(this).find('input.c-email').val()
                })
            })

虽然我省略了上面的部分代码,但我确认contactData对象具有所需的数据。所以我没有遇到任何问题。

我的挑战:现在我需要传递给我的控制器方法的对象contactData来将值输入到数据库中,如下所示;

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Create(CreateBusinessPartnerVM businessPartnerVM)
        {
            if (ModelState.IsValid)
            {
                var businessPartner = new BusinessPartner
                {
                    CardCode = prefixCardCode + businessPartnerVM.CardName.ElementAt(0) + DateTime.Now.ToString(),
                    CardName = businessPartnerVM.CardName,
                    CardType = businessPartnerVM.CardType,
                    Email = businessPartnerVM.Email,
                    Phone = businessPartnerVM.Phone,
                    IsActive = businessPartnerVM.IsActive,
                    ContactPersons = //contactData from the jquery script in the view
                };
            }
        }

我已经搜索过,但仍未找到与我的要求相似的内容。我希望在这里获得快速帮助。感谢。

2 个答案:

答案 0 :(得分:1)

您需要编辑CreateBusinessPartnerVM模型。

添加一个新属性,该属性是ContactData对象的数组。这样,您就可以在业务合作伙伴的同一模型中发布联系人数据并进一步处理。

有点像这样;

public class CreateBusinessPartnerVM {
    .... other properties...
    public ContactData[] ContactList { get; set; }
}

public class ContactData {
   public string FirstName {get; set;}
   public string LastName {get; set;}
   public string Phone {get; set;}
   public string Email {get; set;}
}

一旦启动,您可以沿着正在提交的主对象传递js contactData对象。

*新编辑*

我看到你的桌子已经有了输入字段。 您只需要做两件事来提交联系数据

  1. 确保您的表格符合
  2. 格式
  3. 将表中的所有输入字段命名为“ContactPersons [0] .firstName”和“ContactPersons [0] .lastName” 零将随表中的每一行递增。即第一行为0,第二行为1,依此类推。 这会将对象作为ContactPersons数组与主对象一起发布。
  4. 请确保使用正确的字段名称及其大小写。

答案 1 :(得分:1)

根据您的代码,我猜您正在使用表单向控制器提交数据。 如果是这样,您可以将数据添加到隐藏的输入类型。

使用您的chrome检查器检查隐藏字段的ID并添加如下数据

$('#hiddenFieldId').val(contactData);