我一直在尝试将 JSON 数据传递到 MVC 控制器中,但到目前为止还没有成功。
控制器方法具有模型属性,如newObject,如下所示
[HttpPost]
public ActionResult Create(NewObject newObject)
{
try
{
//_deviceMangementService.CreateDevices(newObject.Name,1); // name is always null here
return RedirectToAction(nameof(Index));
}
catch
{
return View();
}
}
解决这个问题的关键点是对 JSON 对象进行字符串化,定义模型并获取参数作为定义的模型,或者定义 contentType。当它击中控制器时,我在名称和 DeviceId 中得到空值 0。
我做了这些,但定义了一个用于将 JSON 传递到控制器的模型。
var newObject= {};
newObject.DeviceId=1;
newObject.Name = "testds";
$.ajax({
type: 'POST',
url: '@Url.Action("Create","DeviceConfiguration")',
data: { newObject: JSON.stringify(newObject) },
dataType: 'JSON',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data.success) {
alert('Saved');;
}
},
error: function (e) {
console.log(e);
}
});
我正在从网络获取有效负载
newObject=%7B%22DeviceId%22%3A1%2C%22Name%22%3A%22testds%22%7D
是否有另一种方法可以从控制器中的 Ajax 调用获取 JSON 数据,或者我不知道我做错了什么。请指导我。
我认为你应该更改ajax发送的数据:
data: JSON.stringify(newObject)
这样控制器就可以绑定模型中的属性。