Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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核心Web API中json请求主体的单个参数_Asp.net_Asp.net Mvc_Asp.net Core_Asp.net Core Webapi_Webapi - Fatal编程技术网

模型正在绑定,但不是ASP.NET核心Web API中json请求主体的单个参数

模型正在绑定,但不是ASP.NET核心Web API中json请求主体的单个参数,asp.net,asp.net-mvc,asp.net-core,asp.net-core-webapi,webapi,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core Webapi,Webapi,使用邮递员,我试图发布“城市”和“国家”数据 URL: 请求主体:{“城市”:“abc”,“国家”:“xyz”} 标题:内容类型:应用程序/json 但我无法检索数据,而是获取空值,如下所示。通过将属性(城市、国家)封装到模型中,我可以看到数据 下面是我使用的代码 [AllowAnonymous] [ApiController] public class SampleController : ControllerBase { private readonly ILogger<Sa

使用邮递员,我试图发布“城市”和“国家”数据

URL

请求主体:{“城市”:“abc”,“国家”:“xyz”}

标题:内容类型:应用程序/json

但我无法检索数据,而是获取空值,如下所示。通过将属性(城市、国家)封装到模型中,我可以看到数据

下面是我使用的代码

[AllowAnonymous]
[ApiController]
public class SampleController : ControllerBase
{
    private readonly ILogger<SampleController> _logger;

    public SampleController(ILogger<SampleController> logger)
    {
        _logger = logger;
    }

    [HttpPost]
    [Route("api/Sample/SendData")]
    public ActionResult SendData(string city, string country)
    {
        try
        {
            if (ModelState.IsValid)
            {
                //return
                return Ok("Success");
            }
            else
            {
                throw new Exception("error");
            }
        }
        catch (Exception ex)
        {
            //return
            return BadRequest(Convert.ToString(ex));
        }
    }

}
[AllowAnonymous]
[ApiController]
公共类SampleController:ControllerBase
{
专用只读ILogger\u记录器;
公共采样控制器(ILogger记录器)
{
_记录器=记录器;
}
[HttpPost]
[路线(“api/Sample/SendData”)]
公共操作结果SendData(字符串城市、字符串国家)
{
尝试
{
if(ModelState.IsValid)
{
//返回
返回Ok(“成功”);
}
其他的
{
抛出新异常(“错误”);
}
}
捕获(例外情况除外)
{
//返回
返回BadRequest(Convert.ToString(ex));
}
}
}

注意:我希望使用请求正文而不是通过查询字符串发送数据,因为数据最终将传递得更大。

它不适用于单个参数。当您使用数据类型json时,asp.net控制器将始终假定它是您正在发送的对象

如果需要单独的参数,可以删除json请求头并将其替换为
text/plain
,然后将请求主体更改为键值


这里有一个类似的问题,但您需要安装newtonsoftjson nuget包。不过,您只会得到1个字符串,这是整个json文件,然后当它到达控制器时,您将把它反序列化为一个对象


@Nkosi,谢谢,我更正了。仍然存在问题。创建一个模式并将其与
[FromBody]
attribute@Nkosi,使用模型工作正常。但我想特别使用参数。