您好我有一个视图,我在其中编写了一个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
};
}
}
我已经搜索过,但仍未找到与我的要求相似的内容。我希望在这里获得快速帮助。感谢。
答案 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 :(得分:1)
根据您的代码,我猜您正在使用表单向控制器提交数据。 如果是这样,您可以将数据添加到隐藏的输入类型。
使用您的chrome检查器检查隐藏字段的ID并添加如下数据
$('#hiddenFieldId').val(contactData);