【发布时间】:2017-05-19 05:37:33
【问题描述】:
所以我有一个自定义类:
public class CompanyInfo
{
public int CompanyID { get; set; }
public BasicInfo BasicInfo { get; set; }
public EmployeesInfo EmployeesInfo { get; set; }
...
}
在我看来,我想将数据发送回我的控制器功能:
[HttpPost]
public JsonResult SaveCompanyInfoWithOutBalanceSheet(CompanyInfo model)
{
...
}
Ajax函数是这样的:
function onSubmit(){
basicInfoFormData = $("#basicInfoForm").serialize();
employeesInfoFormData = $("#employeesInfoForm").serialize();
var companyInfoData =
{
basicInfoFormData, employeesInfoFormData
};
$.ajax({
type: "POST",
url: '@Url.Action("SaveCompanyInfoWithOutBalanceSheet")',
dataType: "json",
data: JSON.stringify(companyInfoData),
success: function (result) {
if (result.Success)
secondStepOnSubmit();
else
submitError();
}
});
}
当我运行 ajax 函数时,我的控制器函数确实成功接收了 HTTP 请求并将其转换为我的自定义类“CompanyInfo”。但是,这里有一个问题。最后一个属性cof我的“BasicInfo”类是string,属性名称是“Website”。如果我在控制器方法中设置断点,我可以看到绑定程序没有正确反序列化“Website”属性。以下是 Binder 分配给“Website”属性的值:
"test_email_address \",\"employeesInfoFormData\":\"EmployeesInfo.ID=0"
“test_email_address”是我为“WebSite”输入的内容,但不知何故,活页夹还包括 JSON string 的“EmployeesInfo”部分的开头。有什么想法吗?
【问题讨论】:
-
你需要在你的请求对象中设置指定的
contentType: "application/json",jQuery x-form-url-encodes默认是body。 -
它是否按照上面的评论“contentType:”application/json“”?
-
@AluanHaddad 嘿,我尝试添加 contentType:"application/json" 但它不起作用,实际上现在我的控制器函数中的模型为空
-
确切地说,当您希望您的 C# 方法 (EditAssetOnboarding) 需要参数作为模型时,您应该使用数据传递整个模型 - 模型的属性值不少
-
@AluanHaddad 我在这里很困惑,我该怎么办?