从ajax发送数据到控制器并没有得到值到控制器

问题描述 投票:0回答:1

我一直在尝试将 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 数据,或者我不知道我做错了什么。请指导我。

jquery ajax asp.net-mvc
1个回答
0
投票

我认为你应该更改ajax发送的数据:

data: JSON.stringify(newObject)

这样控制器就可以绑定模型中的属性。

© www.soinside.com 2019 - 2024. All rights reserved.