如何在ASP.net Core中的控制器中检索JSON数据?

时间:2018-12-24 07:29:19

标签: json asp.net-core-mvc

我需要获取通过JSON发送的数据并将其保存到asp.net控制器中的模型

  //JSON data
        var dataType = 'application/json';
        var data = {
            ID: 'Zaki',                
        }

        console.log('Submitting form...');
        console.log(data);
        $.ajax({
            type: 'POST',
            url: 'Save',
            dataType: 'json',
            contentType: dataType,
            data: data,
            success: function (result) {
                console.log('Data received: ');
                console.log(result);
            }
        });

控制器

 [HttpPost]
    public ActionResult Save([FromBody] string ID)
    {

        return Json (ID);


    }

我在控制台中获取null,应该是zaki,然后我要从那里编写保存代码...

enter image description here

3 个答案:

答案 0 :(得分:1)

在代码中的数据:数据中修改此行

数据:JSON.stringify(数据)

将数据发送到Web服务器时,数据必须是字符串,并且JSON.stringify方法将JavaScript对象转换为字符串。

另一种方法是,不获取原始字符串值,而是将参数包装到这样的类对象中

public class ParamObj
{
public string ID{get;set;}
}

,然后在您的控制器中获得此对象类型的参数,如下所示。

public ActionResult Save([FromBody] ParamObj data)

感谢

答案 1 :(得分:0)

我知道已经被标记为已回答,但这是另一种方式:

我没有使用绑定的FromBody属性。

控制器

    public class JsonRequest
    {
        public string Id { get; set; }
    }

    [HttpPost]
    public ActionResult Save(JsonRequest data)
    {

        return Json(data.Id);
    }

我使用的是 accept ,而不是使用 dataType ,您无需将json转换为字符串。

为避免相对路径出现问题,我也在使用:url:'@ Url.Action(“ Save”,“ Home”)'。

JavaScript

function send()
{
    //JSON data
    var dataType = 'application/json';
    var data = {
        "id": "Zaki"
    }

    console.log('Submitting form...');
    console.log(data);
    $.ajax({
        type: 'POST',
        url: '@Url.Action("Save", "Home")',                        
        accept: dataType,
        data: data,
        success: function (result) {
            console.log('Data received: ');
            console.log(result);
        }
    });
}

祝你项目顺利。

答案 2 :(得分:0)

另一种实现方法是简单地使用“动态”类型来处理json请求数据。看看:

[HttpPost]
public IActionResult YoutMethod([FromBody] dynamic requestData)
{
  Log.Information(requestData.field1);
  Log.Information(requestData.field2);
  // ...

  return Ok();
}