我一直在尝试将JSON数据传递到MVC控制器中,到目前为止还没有工作。
控制器方法的属性为model likenewObject,如下所示
[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。当它命中控制器时,我在name中获得null值,并且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数据,或者我做错了什么,我不知道。请指导我。
1条答案
按热度按时间fzwojiic1#
我认为您应该更改由aerospace发送的数据:
字符串
所以控制器可以绑定模型中的属性。