Asp.net Core Post参数始终为null

mar*_*inv 8 .net c# asp.net-core asp.net-core-webapi

我从小提琴手发送POST:

POST http://localhost:55924/api/Product HTTP/1.1
User-Agent: Fiddler
Host: localhost:55924
Content-Type: application/json; charset=utf-8
Content-Length: 84

{"Ean":"1122u88991","Name":"Post test","Description":"Post test desc"}
Run Code Online (Sandbox Code Playgroud)

但Post方法总是为空.

// POST api/Product
[HttpPost]
public IActionResult PostProduct([FromBody]Product product)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    _repo.Add(product);

    return CreatedAtRoute("GetToode",product);
}
Run Code Online (Sandbox Code Playgroud)

当我使用[FormBody]时,产品始终为null,当不使用时,产品会被重视,但所有字段都为null.产品类很简单.

public class Product
{
    public int ProductID { get; set; }
    public string EAN { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int? CategoryID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在建议我尝试添加NullValueHandling到ConfigureServices ,但没有用.

services.AddMvc()
    .AddJsonOptions(jsonOptions =>
    {
        jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
    });
Run Code Online (Sandbox Code Playgroud)

Ign*_*nas 6

我只需要更正您的POST请求中的双引号就可以了。尝试这个:

{"Ean":"1122u88991","Name":"Post test","Description":"Post test desc"}
Run Code Online (Sandbox Code Playgroud)

请参见下面的屏幕截图。

屏幕截图


小智 6

我遇到了类似的问题,但我没有检查ModelStateOP的有效性。发生这种情况时,在调试模式下检查它可能会指出模型有什么问题:

快速观察窗口

在此示例中,我使用无效字符串'A'作为Guid属性的测试值,因此模型始终为空。

  • 感谢您的精彩回答!在偶然发现这个之前我在黑暗中拍摄 (2认同)