我通过 AJAX 调用将 json 数据列表传递给 Controller 。 字符串数组“LandPhone、Mobile 和 Email”在 Controller 中变为空。其实还是有一些值(value)的。
主要型号
public class CustomerModel
{
public string ReferenceId { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string TINNo { get; set; }
public string CurrencyId { get; set; }
public List<CustomerAddressModel> Address { get; set; }
}
子模型
public class CustomerAddressModel
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string AddressLine3 { get; set; }
public int ZipCode { get; set; }
public string District { get; set; }
public string State { get; set; }
public string Country { get; set; }
public string[] LandPhone { get; set; }
public string[] Mobile { get; set; }
public string[] Email { get; set; }
}
AJAX 调用
function get() {
$.ajax({
type: 'POST',
url: '/temp/Customer',
data: { "ReferenceId": "", "FirstName": "", "MiddleName": "", "LastName": "", "TINNo": "", "CurrencyId": 0,
"Address": [{
"AddressLine1": "", "AddressLine2": "", "AddressLine3": "", "ZipCode": 0, "District": "", "State": "", "Country": "",
"LandPhone": ["123"],
"Mobile": ["1234567890", "9876543210"],
"Email": ["a@b.com", "b@c.com"]
}]
},
dataType: "json",
//contentType: "application/json;charset=utf-8",
async: false,
success: function (data) {
alert(data);
}
});
在 Controller 方法数据中变得像这样
最佳答案
您需要包含 contentType: "application/json;charset=utf-8",
选项并对数据进行字符串化
$.ajax({
type: 'POST',
url: '@Url.Action("Customer", "temp")', // don't hard code
contentType: "application/json;charset=utf-8"
data: JSON.stringify({ "ReferenceId": ..... "Address": [{ "AddressLine1": "" ... }]}),
....
关于jquery - JSON 数组未绑定(bind)到 MVC 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098209/