Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.net核心的控制器中检索JSON数据?_Json_Asp.net Core Mvc - Fatal编程技术网

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

如何在ASP.net核心的控制器中检索JSON数据?,json,asp.net-core-mvc,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({

我需要用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);


    }






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

    [HttpPost]
    public ActionResult Save(JsonRequest data)
    {

        return Json(data.Id);
    }
我在控制台中得到空值,它应该是zaki,从那里我想写保存代码


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

数据:JSON.stringify(数据)

向web服务器发送数据时,数据必须是字符串,JSON.stringify方法将JavaScript对象转换为字符串

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

public class ParamObj
{
public string ID{get;set;}
}
在你的控制器中,得到这样一个对象类型的参数

public ActionResult Save([FromBody] ParamObj data)

Thanx

我知道已经标记为已回答,但这里有另一种方法:

我没有使用binding FromBody属性

控制器

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


    }






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

    [HttpPost]
    public ActionResult Save(JsonRequest data)
    {

        return Json(data.Id);
    }
我使用的不是dataType,而是accept,您不需要将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);
        }
    });
}

祝您的项目好运。

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

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

  return Ok();
}

您是否试图从数据库中获取数据,并希望与模型绑定以显示在控制台上?您的问题有点不清楚。不,我正在尝试从JSON获取数据并将其保存到数据库。如果我没有错,您的JSON应该如下所示。var data={“ID”:“Zaki”}我添加了一个屏幕截图,我认为问题不在于发送是获取数据,然后为Json创建一个模型,并使用JsonConvert进行如下序列化:Newtonsoft.Json.JsonConvert.SerializeObject(NewlyCreatedJsonModel))