【发布时间】:2021-07-28 21:33:14
【问题描述】:
我正在使用 C# jquery ajax json 处理 .netcore asp.net 项目,我从 ajax 调用传递模型并以字符串格式接收数据(formdata),但无法将EmployeesList 的数据从字符串对象转换为列表对象。
ajax 代码
$('#bttn_Click').click(function () {
debugger;
var empListVal = null;
empListVal = [];
$('input:checkbox:checked').each(function () {
empListVal .push($(this).attr('value'));
});
var Emp_des_ViewModel = {
Designation: des_Value,
Department: dep_Value,
EmployeesList: empListVal
};
$.ajax({
type: "post",
data: "formData=" + JSON.stringify(Emp_des_ViewModel),
url: '/Emp_Designation_Assign/InsertDesignation',
datatype: "json",
success: function (result) {
alert(result);
window.location.href = "/Emp_Designation_Assign/InsertDesignation";
console.log(result);
}
});
});
Emp_des_ViewModel.cs
public class Emp_des_ViewModel
{
public string Designation{ get; set; }
public string Department{ get; set; }
public List<SelectListItem> EmployeesList{ get; set; }
}
Emp_Designation_AssignController.cs
[HttpPost]
public IActionResult InsertDesignation(string formData)
{
var formdata = JsonConvert.DeserializeObject(formData);
Emp_des_ViewModel emp_desViewModel = new Emp_des_ViewModel();
emp_desViewModel = (Emp_des_ViewModel)formdata;
//other code
}
【问题讨论】:
-
您不需要手动反序列化请求。如果 JSON 字符串实际上与 DTO 匹配,您可以将签名更改为
InsertDesignation(Emp_des_ViewModel emp_desViewModel)。如果没有,手动反序列化也不起作用。您发布的代码肯定是错误的。您不能只是将任意对象转换为不同的类型。如果你使用JsonConvert.DeserializeObject< Emp_des_ViewModel>(formData)`,你会得到你想要的对象。 -
JSON 字符串是什么样的?
-
嗨@Niraj-stack,我的回答是否帮助您解决了您的问题?如果可以,请您接受作为答案吗?如果没有,请您跟进让我知道吗?参考:@ 987654321@.Thanks.
标签: c# json .net-core asp.net-core-mvc