如何将jQuery数组对象传递给控制器方法
您好,我有一个视图,其中我编写了一个jquery脚本,将html表值传递到JSON对象中,如下所示如何将jQuery数组对象传递给控制器方法,jquery,asp.net-mvc,Jquery,Asp.net Mvc,您好,我有一个视图,其中我编写了一个jquery脚本,将html表值传递到JSON对象中,如下所示 var contactData = []; $('#tblContacts > tbody > tr').each(function () { contactData.push({ firstName: $(this).find('input.c-firstname'
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()
})
})
[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
};
}
}
虽然我遗漏了上面的部分代码,但我确认contactData
对象具有所需的数据。所以我没有问题
我的挑战:现在我需要将对象contactData
传递到我的控制器方法中,以将值输入数据库,如下所示
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()
})
})
[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
};
}
}
我已经搜索过了,但仍然没有找到与我的要求类似的东西。我希望在这里能得到快速的帮助。谢谢。您需要编辑您的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对象沿着正在提交的主对象传递
*新编辑*
我看到您的表已经有了输入字段。
您只需要做两件事来提交联系人数据
只需确保正确使用字段名称及其大小写。您需要编辑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对象沿着正在提交的主对象传递
*新编辑*
我看到您的表已经有了输入字段。
您只需要做两件事来提交联系人数据
只需确保正确使用字段名称及其大小写。根据您的代码,我猜您正在使用表单向控制器提交数据。 如果是,您可以将数据添加到隐藏的输入类型 使用chrome检查器检查隐藏字段的id,并添加如下数据
$('#hiddenFieldId').val(contactData);
根据您的代码,我猜您正在使用表单向控制器提交数据。 如果是,您可以将数据添加到隐藏的输入类型 使用chrome检查器检查隐藏字段的id,并添加如下数据
$('#hiddenFieldId').val(contactData);
根据您的代码,我猜您正在使用表单向控制器提交数据。如果是这样,您可以将数据添加到隐藏的输入类型中。您是否尝试过使用JQuery AJAX库?或者如果不能使用JQuery,Javascript有一个内置的XMLHttpRequest类。@mausinc没错。我转换为json对象的html表位于表单标记内。问题是如何将对象传递到隐藏的输入类型中?如果这是一个简单的任务,请原谅我。我只是不知道怎么做。检查这个答案,用你的chrome检查器检查隐藏字段的id,然后添加数据,如$(“#hiddenFieldId').val(contactData);太好了,我用答案更新了你的问题,这样寻找相同答案的人可以更容易地找到答案。根据你的代码,我猜你正在使用表单向你的控制器提交数据。如果是这样,您可以将数据添加到隐藏的输入类型中。您是否尝试过使用JQuery AJAX库?或者如果不能使用JQuery,Javascript有一个内置的XMLHttpRequest类。@mausinc没错。我转换为json对象的html表位于表单标记内。问题是如何将对象传递到隐藏的输入类型中?如果这是一个简单的任务,请原谅我。我只是不知道怎么做。检查这个答案,用你的chrome检查器检查隐藏字段的id,然后添加数据,如$(“#hiddenFieldId').val(contactData);太好了,我用答案更新了你的问题,因此寻找相同答案的人可以更容易地找到答案。这类似于视图模型中的
ContactPersons
属性。我已经有这个了。但是我如何通过主对象将json ContactData传递到属性中呢?好的,我可以帮你。你能告诉我你目前的主要目标是如何通过的吗?谢谢沙巴兹。请看我的控制器在哪里的问题。主要对象是正在创建的业务伙伴
。参数是ViewModelCreateBusinessPartnerVM
。或者您想查看ViewModel本身吗?我想查看提交主对象的javascript部分。。在电视上哦,不,我没有。我打算在服务器端完成这一切。这就是控制器的本质。这类似于视图模型中的ContactPersons
属性。我已经有这个了。但是我如何通过主对象将json ContactData传递到属性中呢?好的,我可以帮你。你能告诉我你目前的主要目标是如何通过的吗?谢谢沙巴兹。请看我的控制器在哪里的问题。主要对象是正在创建的业务伙伴
。参数是ViewModelCreateBusinessPartnerVM
。或者您想查看ViewModel本身吗?我想查看提交主对象的javascript部分。。在电视上哦,不,我没有。我打算在服务器端完成这一切。这就是控制器的本质。我使用Newtonsoft的Json将字符串反序列化回Json对象,并按照我想要的方式使用它。非常感谢您的指导。我使用了Newtonsoft的Json来